簡體   English   中英

PHP exec() 命令不起作用

[英]PHP exec() command not working

經過數小時的嘗試和尋找答案后,我無法讓它發揮作用。

托管詳情:

視窗服務器 2012 R2

Plesk 12

IIS 8.5

問題

我的問題是:我想在 PHP 中執行這個命令。 在使用 PHP 腳本創建新用戶后,需要使用該命令重新加載 filezilla 的配置。

C:\Program Files (x86)\FileZilla Server\FileZilla Server.exe /reload-config

當我直接在 CMD 中嘗試時它確實有效。 但是在 PHP 中如果不以某種方式工作。 我嘗試了很多事情,我將嘗試給你我嘗試過的所有禮貌。

我嘗試通過以下方式做到這一點:

試驗 1

$command = '"C:\\Program Files (x86)\\FileZilla Server\\FileZilla Server.exe" /reload-config'; 
exec( $command, $output, $return); 

print_r($output);
echo '<br/>' .$return;

輸出:

Array ( ) 
0

試驗 2

$command = '"C:\\Program Files (x86)\\FileZilla Server\\FileZilla Server.exe" /reload-config'; 
system( $command, $output); 

print_r($output);

輸出: 0

試驗 3

$command = 'C:\\"Program Files (x86)\\FileZilla Server\\FileZilla Server.exe" /reload-config'; 
exec( $command, $output, $return); 

print_r($output);
echo '<br/>' .$return;

輸出: 0

試驗 4(唯一返回錯誤的試驗!)

exec( 'C:\\"Program Files (x86)\\FileZilla Server\\FileZilla Server.exe" /stop 2>&1', $output); 
print_r($output);

輸出:

Array ( [0] => Toegang geweigerd. )

英文:

Array ( [0] => Access denied. )

特權:

幾乎所有的觀察者都發現他們談到了特權。 我做了以下特權:

將所有web用戶和IUSR權限授予CMD.exe和FileZilla Server.exe,並嘗試將IIS身份驗證從匿名設置為管理員帳戶

有人說試試這個:

echo '<pre>';
    system('set', $retval);
echo ' </pre>'; 

如果我這樣做,我的輸出是: http : //pastebin.com/SjzeQpJ0

如果你們想要更多細節就問。 我希望你們能幫我弄清楚。 我盡量說清楚。 謝謝。

終於找到解決辦法了!!


如果您遇到和我一樣的問題,並且不知道如何解決,請按照以下步驟操作。

  1. 登錄到您服務器的遠程(如果您有權訪問它) 打開
  2. 打開 IIS 管理器
  3. 選擇 -> 機器節點下方的應用程序池節點(左面板)
  4. 右鍵單擊所需的域名 -> 高級設置
  5. 滾動到流程模型 -> Id
  6. 單擊 3 個點
  7. 檢查自定義帳戶單選按鈕
  8. 填寫可以訪問遠程桌面的現有管理帳戶,當然還有它的密碼
  9. 按確定
  10. 現在轉到 .exe 或您想通過 exec 命令訪問的任何文件,然后
  11. 右鍵單擊文件並選擇屬性
  12. 轉到安全選項卡
  13. 選擇編輯
  14. 現在擁有您之前選擇的帳戶的全部權利。 如果未列出,則單擊“添加”手動添加

如果你已經完成了所有這些,它現在應該可以工作了。

終於找到解決辦法了!!


如果您遇到和我一樣的問題,並且不知道如何解決,請按照以下步驟操作。
  1. 登錄到您服務器的遠程(如果您有權訪問它)
  2. 打開 IIS 管理器
  3. 選擇 -> 機器節點下方的應用程序池節點(左面板)
  4. 右鍵單擊所需的域名 -> 高級設置
  5. 滾動到流程模型 -> 身份
  6. 單擊 3 個點
  7. 檢查自定義帳戶單選按鈕
  8. 填寫可以訪問遠程桌面的現有管理帳戶,當然還有它的密碼
  9. 按確定
  10. 現在轉到 .exe 或您想通過 exec 命令訪問的任何文件,然后
  11. 右鍵單擊文件並選擇屬性
  12. 轉到安全選項卡
  13. 選擇編輯
  14. 現在擁有您之前選擇的帳戶的全部權利。 如果未列出,則單擊“添加”手動添加

如果你已經完成了所有這些,它現在應該可以工作了。

通過使用上述方法並探索一些方法,我發現了一種更安全的方法來做到這一點。 您需要做的就是啟用“加載用戶配置文件”,然后它將擁有普通用戶分配的所有普通用戶權限。 只是讓它像這樣工作,而不是授予管理訪問權限:

  1. 登錄到您服務器的遠程(如果您有權訪問它)
  2. 打開 IIS 管理器
  3. 選擇 -> 機器節點下方的應用程序池節點(左面板)
  4. 右鍵單擊所需的域名 -> 高級設置
  5. 滾動到流程模型 -> Id
  6. 設置加載用戶配置文件 = True

和工作! 專門修復了 Windows 2012 R2

  1. 進入 IIS
  2. 單擊應用程序池
  3. 選擇應用程序池 ->高級設置
  4. 在 Popup -> Process Model -> 將 Load User Profile 設置為TRUE
  5. 和 -> 流程模型 -> 身份 ->本地系統
  6. 這將充當當前用戶

注意:如果當前對系統有高權限,這將是高風險。

暫無
暫無

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

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