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

标签 php linux bash shell cron

我的 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/

相关文章:

PHP imap_search 收件箱/已发送项目

linux - 如何在ansible命令中提及通配符

c++ - 如何重定向字符串以替换 STDIN_FILENO 文件描述符?

javascript - 我的用户可以通过单击缺少 Ajax 的按钮来访问 $_SESSION 的内容吗?

PHP 文件包含错误

后台错误中的php exec c程序

linux - 查找重复文件

Linux命令通过uid列出所有用户

python - 按行计算匹配某些规则的两个字符之间的大文件中的总字节数

bash - 为什么运行docker容器时没有执行 `~/.bashrc`?