0

好的,我已经研究了几个小时的 cron 工作,检查了这里的每个帖子,查看了谷歌,但我只是不明白它是如何工作的。

我已经使用我的路径设置了一个 cron 作业,我1 * * * * /home/myuser/domains/mysite/public_html/live.php也尝试过/home/myuser/public_html/live.php 似乎没有任何工作。

我必须在 php 文件 ( live.php) 中添加一些内容吗?那是必须执行的代码。代码本身有效。

我知道你们都会认为我很懒,但我真的想不通。

4

3 回答 3

2

*.php是常规脚本文件,与任何其他脚本语言(如 perl)一样,它需要解释器才能运行。因此,如果您想从命令行运行脚本,您可以调用解释器并将脚本文件作为参数提供,例如:

$ /usr/bin/php myscript.php

就是这样 - 它应该运行。

或者(如果使用 linux/bsd 工作)添加为 PHP 脚本文件的第一行

#!/usr/bin/php -q

它告诉 shell 在哪里寻找这个脚本文件的解释器。请确保您的 PHP 在/usr/bin文件夹中,因为这可能因发行版而异。您可以使用 进行检查which,如下所示:

$ which php
/usr/bin/php

如果路径正确,您还需要在脚本文件上设置可执行位,以便您可以尝试“启动它”:

chmod a+x myscript.php

这将使它的行为与任何其他应用程序一样,因此您可以通过这种方式启动它:

/full/path/to/myscript.php

或从当前文件夹:

./myscript.php

这就是这种方法。它应该运行。

所以你的 crontab 行看起来(取决于选择的方法):

1 * * * * /full/path/to/myscript.php

或者

1 * * * * /usr/bin/php -q /full/path/to/myscript.php

你应该使用“0”而不是“1”,因为一小时的第一分钟为零,即:

0 * * * * /usr/bin/php -q /full/path/to/myscript.php

编辑

请注意 cron工作目录是用户的主目录。所以你需要考虑到这一点,这通常意味着使用绝对路径。或者,您可以在通话前加上cd <script working path> && /usr/bin/php -q /full/....

于 2012-10-16T14:42:40.957 回答
1

也许

1 * * * * php /home/myuser/domains/mysite/public_html/live.php
于 2012-10-16T14:37:02.993 回答
1

您需要在命令行上使用 chmod 使您的脚本可执行。此外,您需要这样的东西:

#!/usr/bin/php
<?php
// here comes your code
?>

这是告诉命令行如何执行文件所必需的。注意:这仅在您的 php 二进制文件位于 /usr/bin/php 时才有效

于 2012-10-16T14:38:56.713 回答