[英]php exec() command permission denied
我有一個C ++可執行文件'skypeforwarder'。 如果我在Mac的終端中使用命令行,則skypeforwarder工作:henry $ /Users/henry/Desktop/skypeForwarder/skypekit-sdk_sdk-4.1.2.20_793394/examples/cpp/tutorial/step3/skypeForwarder
sh: /Users/henry/Desktop/skypeForwarder/skypekit-sdk_sdk-4.1.2.20_793394/examples/cpp/tutorial/step3/skypeForwarder: Permission denied
但如果在php exec()中調用它,它總是發出'permission denied';
<?php
echo exec('whoami');
$output = null;
$execBuild = '/Users/henry/Desktop/skypeForwarder/skypekit-sdk_sdk-4.1.2.20_793394/examples/cpp/tutorial/step3/';
$execBuild .= 'skypeForwarder';
$n = exec($execBuild, $output);
我搜索了很多。 問題應該是Web服務器中的php / browser權限問題。 我還嘗試從以下位置更改文件的所有者:
-rwxr-xr-x 1 henry staff 1212716 19 Apr 11:23 skypeForwarder
至
-rwxr-xr-x 1 _www staff 1212716 19 Apr 11:23 skypeForwarder
它仍然無法正常工作。
我根據http://foundationphp.com/tutorials/php_leopard.php在我的mac中設置了apache
雖然Web服務器可以讀取文件本身,但Desktop
文件夾很可能不是,因此Web服務器無法遍歷它以查找可執行文件。 您應該將skypeforwarder
二進制文件移動到Web服務器可讀的位置,例如與您嘗試提供此PHP腳本的位置平行的目錄。 但是,該目錄不應該是Web可訪問的。 使用.htaccess保護它或將其放在Web DocumentRoot上面,但它必須可由Web服務器讀取。
默認情況下,OSX上的Desktop
是-rwxr------
並且不建議更改該目錄的權限。
此外,非常不建議將文件更改為_www
Web服務器用戶擁有和寫入。 相反,它應該是Web服務器可讀和可執行的,但不可寫。
chown henry skypeforwarder
chmod 755 skypeforwarder
標准免責聲明:與往常一樣,在從Web上可訪問的PHP腳本執行系統調用時要格外小心。
試試看php.ini中的disable函數
disable_functions = exec
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.