PHP shell_exec不会调用Windows 10 bash脚本

时间:2017-02-14 11:28:29

标签: php bash windows-10 shell-exec

我在Windows 10周年更新中在XAMPP(Apache)下运行CakePHP项目。

Apache正在我的用户帐户下运行。

应用程序通过shell_exec()调用多个外部进程:ImageMagick,phantomjs按预期执行。

我还想调用一个bash脚本,然后在Ubuntu bash下调用ImageMagick(单独安装,通过apt-get)。我必须将所有路径调整为bash可以解决的形式。

bash /mnt/e/Projects/project-name/website/bin/crop_to_aspect.sh 1 1
/mnt/e/Projects/project-name/website/webroot/images/agent_photo/tmp_ed564289-a6f6-45b7-b9f3-2aec2b8bb3d1.jpg
/mnt/e/Projects/project-name/website/webroot/images/agent_photo/ed564289-a6f6-45b7-b9f3-2aec2b8bb3d1.jpg```

通过shell_exec()调用时命令失败。写入CakePHP的日志,然后从cmd.exe提示调用的相同命令完美运行。

认为它可能是路径问题,我将相同的脚本包装在Windows批处理文件中,包括bash的完整路径。我调用了完整的批处理文件路径,即:

@echo off

SET aw=%1
SET ah=%2
SET in=%3
SET out=%4
C:\Windows\System32\bash.exe /mnt/e/Projects/project-path/website/bin/crop_to_aspect.sh %aw% %ah% %in% %out%

然后调用此脚本:

E:\Projects\project-path\website\bin\crop_to_aspect.bat 4 3
 /mnt/e/Projects/project-path/website/webroot/images/listing_photo/tmp_ed564289-a6f6-45b7-b9f3-2aec2b8bb3d1.jpg
/mnt/e/Projects/project-path/website/webroot/images/listing_photo/ed564289-a6f6-45b7-b9f3-2aec2b8bb3d1.jpg

再次,该命令在cmd.exe中正确执行,但在从PHP脚本通过shell_exec()运行时不执行任何操作。

1 个答案:

答案 0 :(得分:0)

检查某个函数是否在php.ini(disable_functions)行中禁用的函数列表中