我正在使用shell_exec命令向我的學校unix服務器發送命令。我可以做像ls echo之類的東西,但是任何與創建或刪除文件有關的事情都不起作用。我想我可以爲我想執行的命令創建一個腳本並使用shell_exec運行腳本,但是這是一個非常繁瑣的過程,還有其他解決方法嗎?shell_exec on php
謝謝,
我正在使用shell_exec命令向我的學校unix服務器發送命令。我可以做像ls echo之類的東西,但是任何與創建或刪除文件有關的事情都不起作用。我想我可以爲我想執行的命令創建一個腳本並使用shell_exec運行腳本,但是這是一個非常繁瑣的過程,還有其他解決方法嗎?shell_exec on php
謝謝,
聽起來像一個權限問題。從PHP中運行whoami
並查看它運行的用戶。如果您的學校也在使用SELinux之類的東西,那麼除了用戶/組/模式設置的進程外,還有其他限制。但這是一個起點。
shell_exec()
是一種非常糟糕的執行命令的方式,只是因爲保持開放狀態,如果有人利用您的PHP代碼,或者設法上傳PHP文件,則會使服務器更容易受到攻擊。相反,如果可以的話,您應該使用PHP函數,如mkdir()
和fopen($file, '(r|a|w)+)
,以便在您的文件不存在的情況下創建文件。實際上,在代碼中保留shell_exec()
,exec()
,pass_thru()
之類的任何漏洞都可以在你的服務器上執行shell命令。
現在,關於原始問題,您是否檢查過您嘗試使用的文件和目錄的權限?運行PHP的用戶需要具有使用您試圖訪問的文件和目錄的權限。如果您不確定,只需chmod 777
您需要在PHP中使用的任何文件和目錄。