使用cron作业时exec bash shell出现PHP错误?

时间:2014-07-31 08:53:08

标签: php linux bash shell cron

我的PHP脚本使用exec bash shell运行二进制文件时出现问题。如果我在主机上或从shell运行我的PHP脚本,这样就可以了:

php script.php

但是当我使用cron job使其频繁运行时,我发现一个非常大的问题就是PHP exec似乎无法正常运行。我运行cron的用户可以运行php script.php

这是我的cron:

*/2 * * * * php /var/www/MODIS/modisdownload.php >> /home/rasdaman/testphp.txt

这是我的一个PHP脚本exec(注意:它似乎无法运行二进制程序来获取数据)

exec("gdal_translate HDF4_EOS:EOS_SWATH:\"" . $fileInput . "\":mod04:Image_Optical_Depth_Land_And_Ocean " . $folderPath . "temp.tif");

如何解决此问题?请帮忙!

好的,谢谢Sal00m编辑我的问题。问题是PHP exec需要这样的二进制程序的完整路径(/ usr / local / bin / gdalinfo文件名输入)。但是如何通过仅使用gdalinfo来修复(不需要显示完整路径)。

1 个答案:

答案 0 :(得分:2)

2个选项:

*/2 * * * * php /usr/bin/php /var/www/MODIS/modisdownload.php >> /home/rasdaman/testphp.txt

(用php5-cli二进制文件替换/ usr / bin / php(完整路径)。)

或者在脚本中添加shebang

#!/usr/bin/php
<?php
exec("/usr/bin/full/path/gdal_translate HDF4_EOS:EOS_SWATH:\"" . $fileInput . "\":mod04:Image_Optical_Depth_Land_And_Ocean " . $folderPath . "temp.tif");

使用exec添加PATH的完整路径或将php5-cli添加到环境中 (用{{1}}二进制文件替换/ usr / bin / php(完整路径)。)