用php开发一个crontab程序,发现始终运行错误。
——– a.php ———————–-——–-

  1. include common.php’;// 可能还要更复杂的引用关系
  2. echo 'a';

——— crontab 中的运行方式 ———

  1. /usr/local/php5/bin/php /data/crontab/a.php

————————————–——–-
这样会出错,根本原因是因为 a.php 没有在 /data/crontab/ 工作目录下运行.一般的纠正写法如下:
———- a.sh ———————-——–-

  1. #!/bin/bash
  2. cd /data/crontab
  3. /usr/local/php5/bin/php a.php

———- crontab 中的运行方式 ——-

  1. /data/crontab/a.sh

————————————–——–-
其实更优的方案是,调用 php-cgi 来执行,这样就不用写中间的 a.sh 了,并且对于 a.php 本身来讲可以不做任何修改.
——— crontab 中的运行方式 ———

  1. /usr/local/php5/bin/php-cgi -f /data/crontab/a.php

原理:php cli运行时不会把脚本目录变成当前工作目录,而 php-cgi 会自动初始化这个过程。

分类: web

标签:   crontab