[英]Different results from running a script from command line and php
我正在尝试从PHP运行bash脚本。 当我从命令提示符运行它时-一切正常,当我将同一命令传递给exec()时-发生了意外情况。
该脚本对从第三个参数传递来的图像文件进行平均。 第一个参数是目录,第二个参数是结果文件。
bash脚本:
#!/bin/bash
DIR=$1
avg_file=$2
i=0
for file in "$@"; do
if [ $i -eq 0 ]; then
:
elif [ $i -eq 1 ]; then
:
elif [ $i -eq 2 ]; then
# If first file - just copy to result
cp ${DIR}${file} ${DIR}${avg_file}
else
# Merge current file with result
convert ${DIR}${file} ${DIR}${avg_file} -fx "(u+($i-2)*v)/$[$i-1]" ${DIR}${avg_file}
fi
i=$[$i+1]
done
使用命令行通过以下命令调用脚本时:
/path/to/script.sh /path/to/images average.png image/1.png image/2.png"
它工作正常,将图像平均为average.png,但是使用PHP调用时:
exec("/path/to/script.sh /path/to/images average.png image/1.png image/2.png")
似乎用第一个传递的图像替换了average.png,就是这样。 我尝试调试它,它似乎通过了所有参数。
是什么原因引起的?
*编辑:更新了将f-ion转换为实际外观的功能
检查您的PHP脚本位置,如我所见
average.png image / 1.png image / 2.png
您正在使用相对路径,但您可能想使用完整路径
因此,我在convert调用的末尾添加了2>&1 1> /dev/null
,并再次使用php shell_exec运行了它。 输出的结果是找不到convert
函数,因此我添加了putenv("PATH=/usr/local/bin:/usr/bin:/bin");
在shell_exec调用之前,现在可以使用了! 来自这里的想法: imagemagick转换无法通过php工作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.