在php中执行shell命令并不起作用

时间:2013-11-12 11:02:35

标签: php macos shell terminal imagemagick

我正在尝试执行shell脚本,使用命令convert将.png中的一些图像转换为.tif。

我写了一个简短的shell脚本:

#! /bin/bash
convert -adaptive-resize 150% /Applications/MAMP/htdocs/test/1.png /Applications/MAMP/htdocs/test/1.tif
convert -adaptive-resize 150% /Applications/MAMP/htdocs/test/2.png /Applications/MAMP/htdocs/test/2.tif
convert -adaptive-resize 150% /Applications/MAMP/htdocs/test/3.png /Applications/MAMP/htdocs/test/3.tif
convert -adaptive-resize 150% /Applications/MAMP/htdocs/test/4.png /Applications/MAMP/htdocs/test/4.tif
convert -adaptive-resize 150% /Applications/MAMP/htdocs/test/5.png /Applications/MAMP/htdocs/test/5.tif
convert -adaptive-resize 150% /Applications/MAMP/htdocs/test/6.png /Applications/MAMP/htdocs/test/6.tif
convert -adaptive-resize 150% /Applications/MAMP/htdocs/test/7.png /Applications/MAMP/htdocs/test/7.tif
convert -adaptive-resize 150% /Applications/MAMP/htdocs/test/8.png /Applications/MAMP/htdocs/test/8.tif
convert -adaptive-resize 150% /Applications/MAMP/htdocs/test/9.png /Applications/MAMP/htdocs/test/9.

如果我从终端运行此脚本,它将按预期工作。

相反,如果我从php页面启动它,它就不会。

我正在使用此代码:

exec("bash /Applications/MAMP/htdocs/test/convertpngtif.sh");

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

这是权限问题。您需要允许PHP运行的用户访问sh文件。

PHP通常作为www-data运行,在这种情况下你可以打开一个终端并运行类似的东西: -

chown www-data:www-data /Applications/MAMP/htdocs/test/convertpngtif.sh

我不知道你的系统是如何设置的,所以你可能不得不sudo那个命令。

您必须确保www-data也能以类似的方式访问bash脚本访问的文件,因此只需以下命令即可: -

chown -R www-data:www-data /Applications/MAMP/htdocs/test/

答案 1 :(得分:0)

解决方案:在shell脚本中使用完整路径。