背景:我有一個 PHP 腳本調(diào)用shell_exec. 目前我只想測試它是否有效并通過它運行一個基本命令。同一腳本的不同副本存在于同一服務器上的兩個不同的 Web 應用程序中。兩個應用程序的匿名身份驗證都設置為 IUSR。這是示例代碼:$output = shell_exec('dir 2>&1');print_r($output);在 IIS 中的一個網(wǎng)站上嘗試它會提供所需的輸出。但是,在另一個上,它不捕獲任何輸出,而是給出以下錯誤:PHP Warning: shell_exec(): Unable to execute 'dir 2>&1' in C:\inetpub\webapp\script.php on line 4我能找到的關于這個錯誤的唯一信息來自這里:對于 Windows 上的 PHP,如果出現(xiàn)“警告:shell_exec() [function.shell-exec]:無法執(zhí)行”錯誤,則需要檢查文件“C:\WINDOWS\system32\cmd.exe”的權限. 您需要對此文件的讀取/執(zhí)行權限。我建議使用 sysinternals Process Monitor“procmon.exe”來確認正在嘗試運行“cmd.exe”的用戶?!斑M程名稱”的過濾器是“php-cgi.exe”,“路徑”以“cmd.exe”結尾。查看具有拒絕訪問錯誤的任務的事件屬性,它會顯示“模擬”用戶名。這通常是“Internet 來賓帳戶”,通常是“NT AUTHORITY\IUSR”。然而,這似乎不是權限問題。我不明白為什么它在網(wǎng)站上而不是另一個網(wǎng)站上工作。兩個網(wǎng)站的匿名身份驗證都設置為 IUSR。此外,safe_mode在 php.ini 中設置為off.還有什么我需要在這里檢查的嗎?cmd.exe 是否需要 IUSR 的顯式讀取/執(zhí)行權限?
PHP 警告:shell_exec():無法執(zhí)行“[command]”
函數(shù)式編程
2023-04-28 13:52:39