Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php cron选项卡不工作_Php_Cakephp_Cron_Crontab - Fatal编程技术网

Php cron选项卡不工作

Php cron选项卡不工作,php,cakephp,cron,crontab,Php,Cakephp,Cron,Crontab,我通过输入命令-crontab-e添加了一个cronjob。我在该文件中添加了以下任务- */5 * * * * /var/www/web/vendors/shells/aggregated_deals.php */5 * * * * /var/www/web/vendors/shells/deals.php 这些是php脚本。之后,我重新启动了apache服务器,但这些脚本没有执行。并且系统日志文件为空。 请帮我运行这个cron。我不认为这样调用PHP文件就可以执行它,我总是使用curl:

我通过输入命令-crontab-e添加了一个cronjob。我在该文件中添加了以下任务-

*/5 * * * * /var/www/web/vendors/shells/aggregated_deals.php
*/5 * * * * /var/www/web/vendors/shells/deals.php
这些是php脚本。之后,我重新启动了apache服务器,但这些脚本没有执行。并且系统日志文件为空。
请帮我运行这个cron。

我不认为这样调用PHP文件就可以执行它,我总是使用curl:

*/5 * * * * curl http://domain.com/page
或者,如果您不想使用web服务器,可以使用
php
命令本身运行它:

*/5 * * * * php /var/www/web/vendors/shells/aggregated_deals.php

在crontab规则中的星号后面键入的任何内容都将是针对系统执行的命令。如果在终端中运行命令“/var/www/web/vendors/shells/aggregated_deals.php”,我打赌不会发生任何事情……您需要将其作为php脚本调用。

为什么不使用正确的用户调用php cli

*/5****www-data-php/var/www/web/vendors/shell/aggregated_-deals.php

*/5****root/usr/bin/php/var/www/web/vendors/shell/aggregated_deals.php

或者类似的。
您是否已经安装了php cli?

我认为这不会自行运行-您需要使用php解释器运行脚本,如下所示:

/usr/bin/php /var/www/web/vendors/shells/aggregated_deals.php

请注意,您的安装可能在其他地方有
php
——请使用命令行上的
哪个php
命令查找位置。

首先,您需要确保有可用的php CLI。您可以通过运行以下命令来执行此操作:

$ php -v
如果您看到一些正常的输出,那么PHP CLI是可用的。否则,您需要安装它。安装取决于您使用的发行版

其次,如果要直接运行CLI脚本,则需要使其可执行:

$ chmod +x /var/www/web/vendors/shells/aggregated_deals.php
$ chmod +x /var/www/web/vendors/shells/deals.php

第三,PHP CLI脚本与apache无关,您无需重新启动它即可使CLI脚本正常工作。

您需要告诉服务器使用PHP执行文件。按照Elnurs Response中的说明执行所有STEP,并将这些作为您在cron中的行:

*/5 * * * * php -f /var/www/web/vendors/shells/aggregated_deals.php > /tmp/my.log 2>&1
*/5 * * * * php -f /var/www/web/vendors/shells/deals.php > /tmp/my.log 2>&1
*/5 * * * * php -f /var/www/web/vendors/shells/aggregated_deals.php > /tmp/my.log 2>&1
*/5 * * * * php -f /var/www/web/vendors/shells/deals.php > /tmp/my.log 2>&1

$ chmod +x /var/www/web/vendors/shells/aggregated_deals.php
$ chmod +x /var/www/web/vendors/shells/deals.php
如果这不起作用,您可能需要包含PHP的整个路径。
我还添加了一些行,以使脚本记录任何输出。

您需要以蛋糕样式运行它。。。你必须跑

cake shellName shellParam
我相信你的情况是这样的

cake aggregated_deals > /tmp/my.log
cake deals > /tmp/my.log 2>&1
这个蛋糕在你的蛋糕文件夹中,你应该从你的应用文件夹中运行它。。。我不知道如何从克朗做到这一点,但这是你有错


这意味着如果这些脚本是有效的cakeshell

您需要告诉服务器使用PHP执行这些文件。按照Elnurs Response中的说明执行所有STEP,并将这些作为您在cron中的行:

*/5 * * * * php -f /var/www/web/vendors/shells/aggregated_deals.php > /tmp/my.log 2>&1
*/5 * * * * php -f /var/www/web/vendors/shells/deals.php > /tmp/my.log 2>&1
*/5 * * * * php -f /var/www/web/vendors/shells/aggregated_deals.php > /tmp/my.log 2>&1
*/5 * * * * php -f /var/www/web/vendors/shells/deals.php > /tmp/my.log 2>&1

$ chmod +x /var/www/web/vendors/shells/aggregated_deals.php
$ chmod +x /var/www/web/vendors/shells/deals.php

我知道这是张贴了很长一段时间后,但似乎我不是唯一一个

无论如何,我的建议是在cron行中添加php的路径:

*/5 * * * * /usr/bin/php -f /var/www/web/vendors/shells/aggregated_deals.php > /tmp/my.log 2>&1
*/5 * * * * /usr/bin/php -f /var/www/web/vendors/shells/deals.php > /tmp/my.log 2>&1

再次确保权限正常

您是否尝试在浏览器中手动运行它?你试过用php在命令行中运行吗?是cake1.3还是2.0?看起来像是1.3。文档应该可以帮助您:
curl
工作,但是您可能会在这种迂回的web调用中遇到脚本超时(默认情况下CLI调用没有时间限制,IIRC)@Piskvor:很高兴知道,谢谢。我要赶紧离开并在我的服务器上更改所有这些以使用CLI:)YW-这就是我所做的,在发现用
wget
调用的内务脚本在60秒时超时:)如果xe作为普通用户使用
crontab-e
,xe应该编辑该用户的每个用户crontab文件;没有必要在那里指定用户。上面的所有内容在这里都很好-。仍然没有运行脚本现在我通过添加/usr/bin/php编辑了我的crontab,但是仍然没有执行这两个文件谢谢,现在cron正在运行,但是得到了这个错误“php致命错误:在第3行的/var/www/web/vendors/shells/deals.php中找不到类“Shell”。它与链接问题有关吗?在这种情况下,我已经修复了您的cron问题,您需要修复PHP脚本。