我有一个 PHP 脚本,它从某个服务器下载并处理图像,然后将其保存在本地。因为图像每 5 分钟更新一次,所以我也想每 5 分钟下载并保存一次该图像。如果我从浏览器或控制台运行脚本,它会完美运行,如果它从 crontab 运行,则不会创建图像。logPHP.log 文件创建时出现以下错误。
计划任务:
*/5 * * * * /usr/bin/php5 -f /var/www/radar/radar.php > /var/www/logPHP.log
编辑:
我收到的错误:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/intl.so' - /usr/lib/php5/20090626+lfs/intl.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/pspell.so' - /usr/lib/php5/20090626+lfs/pspell.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/snmp.so' - /usr/lib/php5/20090626+lfs/snmp.so: cannot open shared object file: No such file or directory in Unknown on line 0
答案1
有 php ini 文件试图加载不存在的扩展。请/etc/php5
查找
extension=intl.so
extension=pspell.so
extension=snmp.so
并将其删除。
编辑:但是,这可能不是问题的原因。最有可能的是,没有为 cron 作业设置环境变量。
答案2
Syslog 只会告诉您进程的退出代码。因此它不会告诉您 shell 发生的任何写入错误,因为实际的 php 进程已正确结束。
我的假设是,运行 crontab 的用户没有写入 /var/www 的权限。即使 php 脚本没有输出任何内容,该文件仍应被创建。
最后,cron 守护进程会将未捕获的任何输出发送给用户。因此,如果出现错误,您应该会收到一封电子邮件。cat /var/spool/mail/$USER