日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

windows+PHP+shell_exec()无法执行的原因

發布時間:2025/3/15 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 windows+PHP+shell_exec()无法执行的原因 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天使用shell_exec()命令執行wkhtmltopdf.exe 生成pdf文件時,總是無法生成PDF文件,使用var_dump()打印返回值,結果是null??墒菣z查代碼并沒有什么問題啊?執行程序的目錄是
D:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe
好吧,接下來找找原因。

1、通過dos執行wkhtmltopdf程序

首先測試通過dos命令行執行wkhtmltopdf程序:

執行成功,沒有問題。

查看pdf文件是否成功生成:

文件同樣成功生成。

這說明程序執行沒有問題。

2、PHP安全模式

網上說PHP安全模式會影響到shell_php()函數的執行。我查了一下,發現php.ini中安全模式只有

[SQL] ; http://php.net/sql.safe-mode sql.safe_mode = Off

沒有其他的安全模式。而且安全模式還會影響exec()函數的使用,我之前曾經使用過exec()函數,所以不是安全模式的問題。

3、php.ini中disable_functions參數

百度時,有人說是php.ini配置文件中disable_funcitons=shell_exec()。禁用了shell_exec()函數。好吧,php.ini默認disable_funcitons= (null)??磥聿皇沁@里的原因呢。

4、程序執行目錄問題

之后,我有檢查了一下shell_exec()的執行代碼,發現執行目錄
D:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe有問題。
在第二個目錄Program Files中有空格存在,之前考慮到不能含有中文的問題,所以安裝wkhtmltopdf時,走的是D盤下的默認目錄(本來是C盤,我改為D盤了)。既然不能走中文目錄,是不是含有空格的目錄也是不行的呢?于是我就把D:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe改為D:\wkhtmltopdf\bin\wkhtmltopdf.exe。然后修改了shell_exec()執行代碼的執行目錄。
最后執行成功,生成了pdf文件。

5、環境變量問題

此外把文件添加到環境變量中,可以不用帶目錄執行wkhtmltopdf程序。只不過,因為是測試wkhtmltopdf是否能執行含有html+css代碼的文件生成帶有css格式PDF文件,所以沒有添加到環境變量中,希望有小伙伴使用wkhtmltopdf時,可以安裝wkhtmltopdf到D:\Program Files下,然后添加到環境變量內,用php的shell_exec()使用一下,看看能否成功。

總結

以上是生活随笔為你收集整理的windows+PHP+shell_exec()无法执行的原因的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。