【发布时间】:2019-10-16 11:49:47
【问题描述】:
首先我要说的是,我已经在网上进行了广泛的研究,提供的解决方案对我没有用。例如,我已经尝试了 here 发布的所有内容(包括那里的链接解决方案)。这可能是由于我在下面解释的 我的 CakePHP 安装的独特性。
我的问题是我有一个 Cakephp Shell 脚本,当我从命令行运行时它运行良好,例如:
Console/cake enrolmentlogs update_daily_enrolment_logs
但是,当我从 cron 调用该脚本时,出现错误。 cron 调用:
cd /path/to/app/ && Console/cake enrolmentlogs update_daily_enrolment_logs >> /path/to/app/webroot/cron_shell_logs.txt 2>&1
我得到的错误:
PHP Notice: Undefined variable: argv in /path/to/app/Console/cake.php on line 48
Error: This file has been loaded incorrectly and cannot continue.
Please make sure that /lib/Cake/Console is in your system path,
and check the cookbook for the correct usage of this command.
(https://book.cakephp.org/)
#0 /path/to/libs/cakephp-2.10.18/Cake/Console/ShellDispatcher.php(54): ShellDispatcher->_initEnvironment()
#1 /path/to/libs/cakephp-2.10.18/Cake/Console/ShellDispatcher.php(65): ShellDispatcher->__construct(NULL)
#2 /path/to/app/Console/cake.php(48): ShellDispatcher::run(NULL)
#3 {main}
我必须提到的一点是,我的 CakePHP 安装是由几个加载同一个核心库的应用程序组成的,这些应用程序与应用程序本身位于不同的文件夹中。这些应用程序运行良好,我可以使用这个 cron 脚本。在应用程序控制台文件夹中的 cake.php 中,我也更新了以下行以反映这一点(在此之前,我发现另一个错误是因为核心控制台文件不是找到):
//$install = $root . DS . 'lib';
$install = '/path/to/libs/cakephp-2.10.18';
我查看了正在加载的库的所有路径,按照链接解决方案和 CakePHP 自己的 documentation 中的建议更新了 php.ini 变量和系统 PATH,但我仍然无法让它工作。
我希望有人能指出我正确的方向。 同样,如果我从命令行运行相同的脚本,它工作正常,当我从 cron 调用它时,我遇到了问题。 shell 脚本位于应用程序的 Console/Command 文件夹中。
所有这些都在使用 CakePHP 2.10.18 的 LAMP 服务器中。
【问题讨论】:
标签: php cakephp cron command-line-interface cakephp-2.0