Windows 10周年更新でXAMPP(Apache)でCakePHPプロジェクトを実行しています。PHP shell_execはWindows 10のbashスクリプトを呼び出さない
Apacheが自分のユーザーアカウントで実行されています。
このアプリケーションは、shell_exec()によっていくつかの外部プロセスを呼び出します。ImageMagick、phantomjsは期待通りに実行されます。
私はまた、Ubuntu bash(別途、apt-getでインストール)の下でImageMagickを呼び出すbashスクリプトを呼び出したいと思っています。私はすべてのパスを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
で正しく実行しますが、もしくはshell_execを経由して実行したときに何もしない)からPHPスクリプト。
使用してネイティブPHPにスクリプトを書き換える価値があるかもしれませんhttp://php.net/manual/en/book .imagick.php移植性の問題はありません – apokryfos
フェアコール、私は他の誰かのコードベースと一緒にLinuxで開発していますが、シェルスクリプトは書き直すのがかなり簡単です – hughc