簡體   English   中英

PHP 警告:shell_exec():無法執行“[命令]”

[英]PHP Warning: shell_exec(): unable to execute '[command]'

背景:我有一個調用shell_exec的 PHP 腳本。 目前我只想測試它是否有效,並通過它運行一個基本命令。 同一腳本的單獨副本存在於同一服務器上的兩個單獨的 Web 應用程序中。 兩個應用程序的匿名身份驗證都設置為 IUSR。

這是示例代碼:

$output = shell_exec('dir 2>&1');
print_r($output);

在 IIS 的一個網站上嘗試它會得到所需的 output。 但是,另一方面,它沒有捕獲任何 output 而是給出以下錯誤:

PHP Warning:  shell_exec(): Unable to execute 'dir 2>&1' in C:\inetpub\webapp\script.php on line 4

我能找到的關於這個錯誤的唯一信息來自這里

使用 Windows 上的 PHP 時,如果收到“警告:shell_exec() [function.shell-exec]:無法執行”錯誤,則需要檢查文件“C:\WINDOWS\system32\cmd.exe”的權限. 您需要對此文件的讀取/執行權限。 我建議使用 sysinternals Process Monitor 'procmon.exe' 來確認嘗試運行 'cmd.exe' 的用戶。 “進程名稱”的過濾器是“php-cgi.exe”,“路徑”以“cmd.exe”結尾。 查看具有訪問被拒絕錯誤的任務的事件屬性,它將顯示“模擬”用戶名。 這通常是“Internet 訪客帳戶”,通常是“NT AUTHORITY\IUSR”。

但這似乎不是權限問題。 我不明白為什么它在網站上運行而不是另一個。 兩個網站的匿名身份驗證都設置為 IUSR。

此外,php.ini 中的safe_mode設置為off

還有什么我需要在這里檢查的嗎? cmd.exe 是否需要明確的 IUSR 讀取/執行權限?

事實證明,無論出於何種原因,IUSR 都是問題所在。 我無法確切知道原因,但將受影響網站的匿名身份驗證更改為使用它工作的另一個用戶。 所以畢竟是權限相關的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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