PHP中shell_exec出现问题,windows+PHP+shell_exec()没法执行的缘由

今天使用shell_exec()命令执行wkhtmltopdf.exe 生成pdf文件时,老是没法生成PDF文件,使用var_dump()打印返回值,结果是null。但是检查代码并无什么问题啊?执行程序的目录是

D:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe

好吧,接下来找找缘由。php

一、经过dos执行wkhtmltopdf程序

首先测试经过dos命令行执行wkhtmltopdf程序:

8a44ec30602b1308ba2c822acf095c7b.png

执行成功,没有问题。css

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

70dd4cacc667c0685d641d954971b8db.png

文件一样成功生成。html

这说明程序执行没有问题。web

二、PHP安全模式

网上说PHP安全模式会影响到shell_php()函数的执行。我查了一下,发现php.ini中安全模式只有sql

[SQL]

; http://php.net/sql.safe-mode

sql.safe_mode=Off

没有其余的安全模式。并且安全模式还会影响exec()函数的使用,我以前曾经使用过exec()函数,因此不是安全模式的问题。shell

三、php.ini中disable_functions参数

百度时,有人说是php.ini配置文件中disable_funcitons=shell_exec()。禁用了shell_exec()函数。好吧,php.ini默认disable_funcitons= (null)。看来不是这里的缘由呢。安全

四、程序执行目录问题

以后,我有检查了一下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文件。svg

五、环境变量问题

此外把文件添加到环境变量中,能够不用带目录执行wkhtmltopdf程序。只不过,由于是测试wkhtmltopdf是否能执行含有html+css代码的文件生成带有css格式PDF文件,因此没有添加到环境变量中,但愿有小伙伴使用wkhtmltopdf时,能够安装wkhtmltopdf到D:\Program Files下,而后添加到环境变量内,用php的shell_exec()使用一下,看看可否成功。函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值