2010-01-11 103 views
0

我試圖通過PHP中的system()執行命令。該命令是/ usr/bin/unzip,但該函數返回錯誤代碼127.沒有其他輸出。如果我直接在shell中運行相同的命令,它就可以工作。系統()在PHP中修改命令

apache錯誤日誌說'sh:/ unzip:not found'。我還嘗試將該命令放入與PHP腳本位於同一目錄中的shell腳本,並通過system()調用shell腳本。同樣的情況發生:如果shell腳本被稱爲'doit.sh',那麼apache日誌中的錯誤消息將是'sh:/doit.sh:not found'。

exec()具有相同的行爲。

PHP版本是5.2.11-2與suhosin擴展。

任何想法什麼PHP可以做我的命令?

+2

給我們一些代碼。 ;) – hsz 2010-01-11 16:28:05

+0

system('/ usr/bin/unzip somestuff',$ retval);後續代碼var_dump($ RETVAL); 你還需要什麼? – arsenbonbon 2010-01-11 16:32:17

回答

0

在php.ini中關閉安全模式。

如果安全模式開啓且safe_mode_exec_dir屬性爲空,則您將獲得與所述完全相同的行爲。

+0

我以爲它已關閉,它是全局的,但不是本地的。 – arsenbonbon 2010-01-13 07:58:15

3

看起來,如果要發送「解壓縮」命令時,你應該使用「在/ usr /斌/解壓縮」

如果沒有,那麼,有,如果你的網絡服務器在chroot環境中運行你檢查?

C.

+0

當我查看/ proc//root時,它顯示了真實/,所以我猜測它不是chrooted – arsenbonbon 2010-01-11 16:37:09

1

也許試試只是命令名?

system('unzip somestuff', $retval); 
+0

完全相同的行爲 – arsenbonbon 2010-01-11 16:37:50