php exec無法執行的解決方法:1、找到php設定檔php.ini,在檔案裡搜尋“disable_functions”,並把“exec”和“shell_exec”去掉;2、到伺服器修改檔案權限;3、修改配置中的安全模式為「safe_mode=On」。
本教學操作環境:Windows7系統、PHP8.1版、Dell G3電腦。
php exec無法執行怎麼辦?
PHP exec執行系統指令失敗原因分析
#問題背景:
##由於專案需求,需要將html頁面產生圖片,使用phantomjs(點擊了解)工具對頁面進行截圖,在cmd視窗下運行沒有任何問題。但在php中exec運行失敗,提示phantomjs不是內部指令。問題解決:
在百度中找到各種解:方案1:
# 1、修改php.ini 找到php設定檔php.ini,如果是用星外php自動安裝程式設定php環境,這個檔案就在C:\WINDOWS\這個目錄裡。 在檔案中搜尋“disable_functions”,找到它後把“exec”、“shell_exec”去掉,然後儲存檔案。 2、修改cmd.exe檔案屬性 進入C:\WINDOWS\system32,找到cmd.exe這個文件,右鍵->屬性,在「安全性」設定裡新增Internet 來賓帳戶,也就是IUSR_******那個帳戶,然後賦予「讀取與運行」、「讀取」的權限。方案2:
有說是權限問題。 解決方案:https://www.php.cn/php-weizijiaocheng-498092.html
#方案3:
#php的內建函數exec,system都可以呼叫系統指令(shell指令),當然還有passthru,escapeshellcmd等函數。 在很多時候利用php的exec,system等函式呼叫系統指令可以幫助我們更好、更快的完成工作。例如前二天筆者在批次處理.rar檔時exec就幫我了大忙了。 今天整理一下常用的呼叫系統函數發出來和大家分享經驗。 注意:要想使用這二個函數php.ini中的安全模式必須關閉,不然為了安全起見php是不讓呼叫系統指令的。 先看一下php手冊對這二個函數的解釋:exec --- 執行外部程式###语法 : string exec ( string command [, array &output [, int &return_var]] )
语法 : string system ( string command [, int &return_var] )
这二个都是用来调用系统shell命令,
不同点:
exec可以把执行的结果全部返回到$output函数里(数组),$status是执行的状态 0为成功 1为失败
systerm不需要提供$output函数,他是直接把结果返回出来,同样$return_var是执行的状态码 0为成功 1为失败
exec示例:
以下为引用的内容:
<?php $a = exec("dir",$out,$status); print_r($a); print_r($out); print_r($status); ?>
system示例:
以下为引用的内容:
<?php $a = system("dir",$out); print_r($a); print_r($out); ?>
总结:
以上三个解决方案都是从百度搜索到的。
第一个解决方案我查看了配置,不存在这种情况,pass。
第二个解决方案由于需要改服务器权限,情况不允许,没试。
第三个解决方案参考了一下,修改了配置中的安全模式,safe_mode=On;然后问题迎刃而解。
OK,以上是我解决问题的过程。希望可以帮到广大像我一样的小白。
推荐学习:《PHP视频教程》
以上是php exec無法執行怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!