Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.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 MAC OS上的Cron作业问题_Php_Cron - Fatal编程技术网

Php MAC OS上的Cron作业问题

Php MAC OS上的Cron作业问题,php,cron,Php,Cron,我正试图在MAC OS上运行我的第一个cron作业(我的本地主机正在运行MAMP) 要访问crontab,要运行cron作业,我在命令行中键入以下内容: crontab -e 然后我按键盘上的I,进入插入模式以插入cron作业 已插入cron作业 * * * * * wget http://localhost:8888/project/cron.php 然后我按esc键并在命令行中键入:wq 然后我得到一个信息: installing new crontab 然后我用c

我正试图在MAC OS上运行我的第一个cron作业(我的本地主机正在运行MAMP)

要访问crontab,要运行cron作业,我在命令行中键入以下内容:

crontab -e
然后我按键盘上的
I
,进入插入模式以插入cron作业

已插入cron作业

*   *   *   *   *   wget http://localhost:8888/project/cron.php
然后我按esc键并在命令行中键入
:wq

然后我得到一个信息:

installing new crontab
然后我用
crontab-l
检查运行的cronjobs是什么,它说:

*   *   *   *   *   wget http://localhost:8888/project/cron.php
但是什么都没发生

另外,下面是我在cron.php文件中作为测试脚本执行的脚本。这意味着在项目根目录中的文本文件中生成一个新的时间戳(cron作业应该每分钟都会这样做):


解决方案是使用文件路径而不是url。首先,我找到了php的位置。我是这样做的:

whereis php
这为我提供了以下文件路径:

/usr/bin/php
然后,我获得了项目中cron.php文件的完整文件路径:

/Applications/MAMP/htdocs/project/cron.php
然后,我在crontab cron作业中结合了这两种方法:

*   *   *   *   *  /usr/bin/php  /Applications/MAMP/htdocs/project/cron.php

我使用的实际步骤与我原来的问题中的步骤相同。

你有吗?正在运行
wget吗http://localhost:8888/project/cron.php
您是否按预期在终端工作?有时,cron环境运行时配置了不同的路径。最好总是使用完整路径,例如
/usr/local/bin/wgethttp://localhost:8888/project/cron.php
(键入
which wget
查找完整路径)仅供参考,您不需要通过
wget
调用PHP。直接执行PHP脚本通常更简单,例如
***/path/to/PHP/path/to/project/cron.PHP
Hi@Phil这很管用-我做了
***/usr/bin/PHP/Applications/MAMP/htdocs/project/cron.PHP
,如果你想这样做,我会把它标记为正确的。嗯,在添加可能有效的随机答案之前,最好先找出您最初的方法不起作用的原因。以下哪种方法作为哪个用户运行?文件的权限和所有权很重要!您最初的问题可能是指向
wget
的路径。如果你能尝试一下,那就太好了too@Phil问题中给出了文件的
wget
url。我甚至在那个文件中重复了一些文本来再次检查它。除非我误解了你的观点?我的意思是使用
哪个wget
获取可执行文件的路径,并在crontab中使用它,例如
/usr/local/bin/wgethttp://localhost...
。仅供参考,我认为使用PHP可执行文件是更好的选择,但我只想知道为什么您的原始解决方案没有work@Phil实际上我确实试过了,但我得到了(现在仍然得到)一条消息说,
wget not found
,然后尝试文件路径。这是您提到的第一条错误消息,最好包含在您的问题中。仅供参考,我刚刚编造了
/usr/local/bin/wget
,这可能不正确。您从
哪个wget
wget
在哪里得到了什么?
*   *   *   *   *  /usr/bin/php  /Applications/MAMP/htdocs/project/cron.php