2013-11-15 186 views
0

我已經在我的OSX上安裝了MAMP,並試圖從我的php文件運行一個shell命令,但似乎我無法訪問終端或命令未被髮送到終端。從MAMP運行shell命令PHP

$cmd = "some shell command" 
$output = shell_exec($cmd); 
if($output == null) 
    echo "returned null"; 
else echo $output; 

我總是得到「返回null」,並且那裏沒有執行shell命令。該命令是正確的,如果我複製了「某些shell命令」並將其粘貼到終端中,該命令將被執行。我在Windows中測試過相同的文件,命令行是從php執行的,這個問題只出現在mac中。那麼如何在mac中訪問終端?

PS:

  • OSX 10.6.8
  • MAMP 2.0.5
  • PHP 5.3.6
+0

你期望你的命令返回? shell_exec()在錯誤輸出或無輸出時都返回null。 –

+0

我把輸出測試結果,我只想執行命令 – fareed

回答

2

有很多的Windows/MAC/Linux操作系統之間的差異的工作。在Windows中,shell_exe命令提供了訪問權限。即使用戶在Windows中的資源有限,shell_exe命令也可以執行。

對於Mac/Linux操作系統,運行shell_exe命令有很多限制。強烈建議不要使用PHP的shell_exe命令。主機容易成爲目標。您必須編輯PHP.INI以提供對用戶的shell_exe訪問權限。

如果您不是Mac/Linux主機的管理員,請詢問機器管理員。如果,管理提供訪問然後確定更少,你必須嘗試另一種方式,這取決於你的項目需求。

編輯PHP.INI

哪個編輯正確的php.ini文件取決於由計算機使用的操作系統。位置通常根據所需的事情而改變。

如果您使用的是WHM CPanel,那麼它變得不那麼容易。 php.ini文件的位置一般

/usr/local/lib 

,如果你使用的是其他任何第三方程序的位置一般會改爲

/usr/local/cpanel/3rdparty/etc/php.ini 
+0

那麼在mac中運行shell命令的安全做法是什麼?它是我的網頁中使用shell命令的必要部分。 – fareed

+0

我無法在php.ini中找到shell_exec,也有我的禁用函數,在php.ini中沒有參數 – fareed

+0

@fareed回答了您的問題 – Vineet1982