2012-03-18 111 views
1

在我的本地機器訪問,我可以從一個控制器運行在Rails應用程序下面的命令,通過谷歌瀏覽器:某些命令沒有與PHP的EXEC(),但工作與Ruby的「系統」命令

system 'say hello dan'

這產生了預期的輸出 - 我的mac上的'say'程序會說「hello dan」。

從PHP應用程序中的控制器運行相同的命令,或者通過谷歌瀏覽器運行任何php腳本,並且沒有輸出。

exec('say hello dan');exec('/usr/bin/say hello dan');都不起作用。

我檢查了權限,但是apache和我一樣以同一個用戶身份運行。

但是,從命令行運行包含該代碼的腳本可行!

任何人都可以提供任何見解爲什麼某些程序不工作?其他命令如afplay和其他標準命令在/ usr/bin中工作得很好。

+0

你確定它是用同一個用戶運行嗎? 'whoami'? – 2012-03-18 20:45:54

+0

看看'php.ini' – kirilloid 2012-03-18 20:47:17

+0

絕對是'danmatthews'和我的bash登錄一樣。 – 2012-03-18 20:50:06

回答

2

您的服務器可能被配置爲在安全模式下使用PHP。安全模式限制的exec()如下:

「你只能在safe_mode_exec_dir設置的目錄下進行執行操作基於某些原因,目前不能有..組件中的可執行文件路徑escapeshellcmd()將在參數執行。這個功能「。

+0

謝謝,已檢查phpinfo和安全模式已禁用。 – 2012-03-18 20:49:36