我想使用 cron 选项卡从 url 运行 php 文件。我正在使用虚拟主机,我给出了这样的命令
9 11 9 2 * wget -O /dev/null http://www.domainname.com/cronfile.php
但它不起作用请告诉我为什么这不起作用。我认为这个命令必须运行“cronfile.php”,我不想收到来自 cron 的任何电子邮件。
尝试:
9 11 9 2 * wget -O /dev/null 'php -f /path/to/cronfile.php'
或添加到“cronfile.php”
#!/usr/bin/php
并赋予它运行权限:
chmod +x 'cronfile.php'
有关从命令行运行 PHP 的完整详细信息,请参阅手册
更新 1
路径有问题吗?如果您尝试编辑文件vi path/to/file.php
,您可以打开它吗?如果是这样,请尝试手动运行php -f /path/to/cronfile.php
,您是否产生错误?如果没有,请将以下内容添加到您的 php 文件中:
error_reporting(E_ALL);
ini_set('display_errors', 'On');
更新 2
我觉得你有点困惑。你为什么通过 URL 运行它?你想达到什么目的?
通过“执行” http://www.domainname.com/cronfile.php文件将不会在本地运行,PHP 服务器端 HTML 嵌入式脚本语言,这意味着当您将运行http://www.domainname。 com/cronfile.php vi 您的本地 crontab,该文件将在远程服务器 (www.domainname.com) 上运行,而不是在本地运行,就像您在浏览器中打开此 URL 一样。
只要它是静态脚本,最好在本地运行它。一旦你通过 URL 运行,你将很容易受到使用URL 劫持的代码注入。我建议你阅读它。
更新 3
添加参数使用$argv
:
php -f /path/to/cronfile.php hello_world
并在 php 文件中:
echo $argv[0];
这取决于您的目标页面是否是本地的。如果是,您可以使用命令php5 /path/to/php/file.php
。如果不是,则 wget 方法是正确的,尽管我会这样称呼它:/usr/bin/wget --quiet --output-document=/dev/null http://www.server.com/page.php
. 希望这可以帮助。(可能重复此)