【问题标题】:PHP error with exec bash shell when using cron job?使用 cron 作业时 exec bash shell 出现 PHP 错误?
【发布时间】:2014-07-31 08:53:07
【问题描述】:

我的 PHP 脚本存在一个严重问题,即使用 exec bash shell 运行二进制文件。如果我像这样在主机上或从 shell 运行我的 PHP 脚本也没关系:

php script.php

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

这是我的 cron:

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

这是我要执行的 1 个 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 来修复(不需要显示完整路径)。

【问题讨论】:

  • 可能是路径问题,你确定gdal_translate$PATH中吗?
  • 您的 cli php 是否可以访问必要的库?
  • 究竟发生了什么或没有发生什么?考虑到脚本可能以完全不同的用户身份运行,具有不同的权限和不同的环境配置,如 cron。
  • 正如@deceze 所说,您可能正在以其他用户身份运行,将错误输出到 txt 文件可能会看到
  • 好的,感谢 Sal00m 编辑我的问题。问题是 PHP exec 需要像这样的二进制程序的完整路径(/usr/local/bin/gdalinfo 文件名输入)。但是我怎样才能通过只使用 gdalinfo 来修复(不需要显示完整路径)。

标签: php linux bash shell cron


【解决方案1】:

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");

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2015-10-29
    相关资源
    最近更新 更多