我在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()运行时不执行任何操作。
答案 0 :(得分:0)
检查某个函数是否在php.ini(disable_functions)行中禁用的函数列表中