簡體   English   中英

php exec()命令權限被拒絕

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM