我正在尝试按计划运行php脚本。所以我认为crontab是个好主意。我正在使用的服务器是在Linux上,我并不熟悉。所以我遇到的问题是,我不知道如何使脚本可以从PHP执行。我需要引用脚本,或将其放入可以从命令行运行php的文件夹中。所以我不知道给我的crontab提供什么路径,例如:
5 * * * * var/www/some/path/script.php
我在
中发现了一些关于这个php可执行文件的模糊信息/usr/bin/php
但我找不到任何php文件,也许我没有安装它?我的php5和apache安装在:
/etc/php5
所以我的问题变成了,无论如何在任何其他文件夹中执行带有crontab的php脚本,或者我只是在usr / bin / php中缺少php可执行文件?
答案 0 :(得分:30)
首先在命令行输入:
whereis php
以运行cron作业的用户身份执行此操作。这将显示可执行文件的路径。然后,您可以在cron条目中使用该路径(如果它不在您的PATH变量中):
5 * * * * /your/path/to/php /var/www/some/path/script.php
编辑:如果安装了Apache PHP模块,则可能需要安装php5-cli
(Ubuntu软件包名称)软件包。这将为您提供可以从命令行运行的二进制可执行文件。
答案 1 :(得分:5)
这是一个Linux系统吗?
在较新的Linux发行版中,有
实际上是一个方便的crontab设置系统
这不需要crontab中的任何条目
由用户。
例如,在SuSE Linux中,您有目录
/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.monthly/
/etc/cron.weekly/
只需在其中任何一个中放入一个调用脚本(konno_php_start) 目录,如
/etc/cron.hourly/konno_php_start
可执行(chmod 755左右)和 包含:
#!/bin/sh
cd /var/www/some/path/
php script.php >> logfile.txt 2>&1
并重新启动cron守护程序。多数民众赞成。
从日志文件中,您将看到您的php解释器是否 将在PATH中找到。如果没有,请更改 在/etc/cron.hourly/konno_php_start中输入 到
/full/path/to/php script.php >> logfile.txt 2>&1
此致
RBO
答案 2 :(得分:5)
我必须找到跟踪路径才能找到可执行文件:
andy@ararat:~$ type php
php is /usr/bin/php
andy@ararat:~$ file /usr/bin/php
/usr/bin/php: symbolic link to `/etc/alternatives/php'
andy@ararat:~$ file /etc/alternatives/php
/etc/alternatives/php: symbolic link to `/usr/bin/php5'
andy@ararat:~$ file /usr/bin/php5
/usr/bin/php5: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped
所以你需要包含/ usr / bin / php5作为php可执行文件的路径,如下所示:
andy@ararat:~$crontab -e
#*/1 * * * * /usr/bin/php5 /home/andy/www/dev.com/corp_rewards_cron.php
答案 3 :(得分:2)
你也可以使用env,它会为你找到并启动php:
/usr/bin/env php /var/www/some/path/script.php
或者你可以在你的script.php(第一行)中放置一个shebang:
#!/usr/bin/env php
然后使其可执行,并让crontab直接调用它,就像在你的第一个例子中一样:
5 * * * * /var/www/some/path/script.php
答案 4 :(得分:1)
您可以在本地使用wget命令:
5 * * * * wget http://localhost/some/path/script.php
答案 5 :(得分:0)
我建议你这样做,
*/5 * * * * /path/gridmon2.pl 1> /dev/null 2> /dev/null
你在.pl代码中你应该使用wget或类似的东西grep:
wget "/www/root/index.php"
或者你可以这样做:
/usr/bin/wget "/www/root/index.php"
这只是我的建议,我只尝试wget到外部网站而不是在本地工作。
请尝试恢复。