2017-02-14 6 views
2

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スクリプト。

+0

使用してネイティブPHPにスクリプトを書き換える価値があるかもしれませんhttp://php.net/manual/en/book .imagick.php移植性の問題はありません – apokryfos

+0

フェアコール、私は他の誰かのコードベースと一緒にLinuxで開発していますが、シェルスクリプトは書き直すのがかなり簡単です – hughc

答えて

0

チェック機能はphp.iniで無効になって機能のリストにない場合(disable_functions)ライン

関連する問題