簡體   English   中英

PHP-exec,shell_exec,系統無法正常工作

[英]PHP - exec,shell_exec,system not working

我讀了很多類似的問題,但對我沒有任何幫助

我使用wamp 2.2,Apache 2.0,PHP V5.3.8

safe_mode = off-我試圖從php.ini中刪除了disabled_functions

exec("chrome.exe google.com");

什么也沒有發生,當我嘗試

exec("calc");

盡管我將apache服務的用戶更改為管理員,並且我使用

exec("whoami");

問題出在哪兒?

CMD和php shell的環境路徑可能不同。 您要么必須提供文件的完整路徑,要么首先在php中export chrome.exe的路徑。

另外,我相信chrome.exe打開頁面需要XServer,php無法在shell中打開圖形界面。 這些命令不會作為父項傳遞給實際的shell,因此php文件無法為您“啟動”應用程序。

請閱讀exec函數的詳細信息: PHP exec Reference

也可以嘗試添加2> errors.txt以查看程序執行中存在的錯誤(如果有)。

-

該程序需要知道要連接到哪個X服務器,並且需要具有連接到該服務器的權限。 您可以使用DISPLAY環境變量指定X服務器。 如果從X的終端或GNOME面板或類似的程序運行PHP程序,通常將自動設置該參數; 但是,如果您以其他方式運行PHP腳本,則可能不知道要連接到哪個X服務器。

X有多種指定連接到服務器的權限的方法,但是最常見的一種方法是在用戶主目錄中使用一個名為“ .Xauthority”的文件。 因為只有在X服務器上登錄的用戶才能讀取此文件,所以他們是唯一可以運行GUI程序的用戶。 因此,如果您以與在X服務器上登錄的用戶相同的身份啟動PHP用戶,則權限不會有任何問題。 但是,如果PHP程序以其他用戶身份運行,則必須授予該用戶訪問X服務器的權限。

參考: http : //bytes.com/topic/php/answers/838364-cant-launch-graphical-apps-php-exec-ubuntu-8-04-system (我知道該鏈接適用於Linux,並且不會與Windows完全相同的解決方案,但是exec()仍然需要知道要引用哪個X接口)

停止Apache作為服務運行。

Windows運行服務時,它不是直接以啟動服務器或進行管理的用戶身份運行,因此很可能是在服務環境中啟動chrome,因此您不會看到它加載在桌面上,有兩種解決方法

停止apache服務瀏覽到您的apache目錄並手動運行httpd.exe,然后嘗試運行腳本,或者如果不需要通過Web請求運行該腳本,則它不使用瀏覽器中的任何內容,則可以允許它與c:\\wamp\\php\\php.exe yourfile.php (您的php路徑應替換為c:\\wamp\\php

暫無
暫無

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

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