2015-05-31 124 views
1

我想通過在php中使用下面的代碼來啓動一個可執行文件myapp,但是出現錯誤。php exec不能在mamp上工作

<?php 
echo "yo"; 
echo exec('whoami',$output,$retval); 
echo $retval; 
echo exec('myapp.app',$output,$retval); 
echo $retval; 
echo exec('/Applications/MAMP/htdocs/myapp.app/',$output,$retval); 
echo $retval; 
?> 

結果是yodan127127。 127我查找錯誤代碼意味着找不到程序。

我也在其他帖子中推薦的Applications/Mamp/Library/bin/envvars_ 中註釋了一些行。

我已經把myapp.app放在幾個目錄中 htdocs,bin,cgi-bin,但是給出了同樣的錯誤。

#if test "x$DYLD_LIBRARY_PATH" != "x" ; then 
# DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH" 
#else 
# DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib" 
#fi 
#export DYLD_LIBRARY_PATH 
# 
+0

您的二進制文件的路徑應該是'/ Applications/MAMP/htdocs/myapp.app/Contents/MacOS/myapp'。 '/ Applications/MAMP/htdocs/myapp.app /'只是一個目錄。 – VolenD

+1

很酷。我從來沒有想過這件事。謝謝。 – techdog

回答

-1

的Excel表彰在PHP中使用所以這都需要在服務器上安裝,讚揚一樣難懂的等等,那麼你使用exec()函數。

+0

來自echo的轉儲清楚地表明他具有'exec'功能(並且他的用戶名是dan)。另外,[php的exec手冊手冊](http://php.net/manual/en/exec.installation.php)說:「使用這些函數不需要安裝;它們是PHP核心的一部分。」 –

0

您必須將exec指向二進制文件,而不是指向容器。

.app只是一個具有內部結構的容器目錄,二進制文件的路徑應該看起來像/Applications/MAMP/htdocs/myapp.app/Contents/MacOS/myapp。二進制文件的精確位置在/Applications/MAMP/htdocs/myapp.app/info.plist文件中。您可以右鍵單擊該應用程序並選擇顯示包內容以查看結構。

但運行應用程序最簡單的方法就是用open命令打開它:

open '/Applications/MAMP/htdocs/myapp.app/' 

應該從PHP可運行作爲參數exec