作为 Cron 的 PHP 脚本不起作用,但可以从 CLI 运行

标签 php linux magento cron

我有一个 php 脚本可以触发一些 magento 操作,我将它设置为以下 cron:

cd /home/dir/public_html; php -f file.php;

这会启动脚本,但由于某种原因它没有完成执行,cron 以用户“user”身份运行,当我以 root 用户身份从终端运行命令时,它运行良好。但是,它使用的所有文件都对用户开放。我认为这是路径问题,这就是为什么我将 CD 命令添加到它的前面,但事实并非如此。

我认为这可能是创建锁定文件的问题,我让它创建一个锁定文件,运行脚本,然后删除锁定文件以防止它运行(如果它已经运行)。锁定文件已生成但从未删除,据我所知,如果它以用户“用户”的身份创建它,那么它也应该能够以该用户的身份删除它。

有什么想法吗?非常感谢。

最佳答案

尽量把PHP的完整路径,或者在crontab的第一行定义PATH变量:

PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin:/usr/sbin

编辑:此外,您可以这样记录脚本:

* * * * * cd /home/dir/public_html; /usr/bin/php -f file.php; &>/tmp/file.log

关于作为 Cron 的 PHP 脚本不起作用,但可以从 CLI 运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8040116/

相关文章:

php switch case语句来处理范围

c++ - 动态加载使用 --wrap=malloc 编译的库时未解析的符号 __real_malloc

linux - 验证输入的最后 4 个字符的 Bash 脚本

php - Magento 类方法覆盖不起作用

php - 套接字流,字节数和计时器

php - preg_match 用于 mysql 日期格式

php - 如何在不同的表中使用 laravel 的 Auth 类?

regex - 解析日志文件,检查日期,报告结果

php - Magento:Mage_Core_Block_Flush(核心/刷新) block 有什么用?

mysql - 我应该为 Magento 启用还是禁用 mysql query_cache?