我的 PHP 脚本有一个严重的问题,它使用 exec bash shell 从中运行二进制文件。如果我在主机上或从这样的 shell 运行我的 PHP 脚本就没问题:
php script.php
但是,当我使用 cron 作业使其频繁运行时,我遇到了一个非常大的问题,即 PHP exec 似乎无法正常运行。我由可以运行 php script.php
的用户运行 cron。
这是我的计划:
*/2 * * * * php /var/www/MODIS/modisdownload.php >> /home/rasdaman/testphp.txt
这是我要执行的 PHP 脚本之一(注意:它似乎无法运行二进制程序来获取数据)
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 来修复(不需要显示完整路径)。
最佳答案
2个选项:
*/2 * * * * php /usr/bin/php /var/www/MODIS/modisdownload.php >> /home/rasdaman/testphp.txt
(将/usr/bin/php 替换为您的 php5-cli
二进制文件(完整路径)。)
或者添加一个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");
使用putenv()
将完整路径添加到exec
或将PATH
添加到环境中
(将/usr/bin/php 替换为您的 php5-cli
二进制文件(完整路径)。)
关于使用 cron 作业时 exec bash shell 出现 PHP 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25054649/