cron 执行php,linux系统下cron运行php程序

最近我碰到了一个问题:我需要触发一个php脚本来定时给我发邮件。可是,这个脚本是另一个脚本的一部份,用到了很多includes命令,同时也有很多库文件使用了includes命令。

一般情况下,触发一个php脚本无话可说,你需要做的便是在服务器上设置一个如下的crontab

/bin/local/php/path/to/your/php/script.php

这就是了,无论你是否愿意,script.php这个脚本文件将由crontab自动运行

可是,问题就来了:当bash运行一个cron的时候,不会通过Apache,当然了,还有它的参数,include_paths等等。所以呢,php将会在/bin/local/php目录下找文件,当然找不到。

所以,遇见这种情况,按照下面的方法做:

在终端上输入如下命令得到sh和lynx程序的路径:

whereissh

whereislynx

or

whichsh

whichlynx

随便输入一个,其中便会返回你要的路径。如果你的系统里没有lynx,试试links,w3m,或者links2,这些是其它的文本模型浏览器。这些浏览器将会运行你的脚本。

然后你需要创建一个sh文件,用它来调用php文件,通过lynx。假设你的服务器已经安装了lynx,sh路径为/bin/sh,lynx路径为/usr/local/bin/lynx

#!/bin/sh

/usr/local/bin/lynx-sourcehttp://www.yoursite.com/folder/script.php

注意感叹号

把这个脚本保存为cron-lynx.sh

保存到一个你找得到的地方,比如:

/usr/www/yourdirectory/sh_scripts/

我个人比较喜欢放在网站根目录。

然后再创建一个script.php的文件。当cron运行的时候,将会通过lynx来调用它。这个文件可以通过浏览器来访问。我的这个很简单:

//I'massumingyou'vealreadysetyourincludepath

include('includes/stuff/another_script.inc');

another_program();

?>

然后我编辑主机的crontab,像下面这样。

/bin/sh/usr/www/yourdirectory/sh_scripts/cron-lynx.sh

在/bin/sh和/usr间有空格。就这样就设好了,还有一点要注意的是,你的sh文件和php文件都正确无误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值