今天使用shell_exec()命令执行wkhtmltopdf.exe 生成pdf文件时,总是无法生成PDF文件,使用var_dump()打印返回值,结果是null。可是检查代码并没有什么问题啊?执行程序的目录是
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()无法执行的原因相关推荐

  1. windows服务器上无法运行bat文件,Windows 2008任务计划执行bat脚本失败返回0x1的解决方法...

    测试环境: C:\>systeminfo | findstr /c:"OS Name" OS Name: Microsoft Windows Server 2008 R2 E ...

  2. Windows 2008驱动安装失败的原因及解决方法

    希望这些内容能够帮助各位朋友顺利地在Windows Server 2008系统环境下安装使用好各种设备的驱动程序! 寻找安装失败原因 一般来说,当我们将目标设备的驱动安装光盘正确放置到Windows ...

  3. windows下bat处理执行Mysql的sql语句

    这篇文章主要介绍了windows下bat批处理执行Mysql的sql语句,需要的朋友可以参考下 有时候我们需要用bat来定时执行mysql那么就可以参考下面的代码 直接上代码: @ECHO OFF S ...

  4. 和远程ip_漏洞Microsoft Windows TCP/IP 远程执行代码漏洞威胁通告

    2020年10月14日,中测安华必达实验室技术团队依托监测平台第一时间发现微软公司(Microsoft)披露了Microsoft Windows TCP/IP 远程执行代码漏洞(CVE-2020-16 ...

  5. layui表单提交使用form.on(‘submit(sub)‘,function (){}) 使用ajax请求时回调不执行的原因及解决方法

    layui表单提交使用form.on('submit(sub)',function (){}) 使用ajax请求时回调不执行的原因及解决方法 参考文章: (1)layui表单提交使用form.on(' ...

  6. 设定Windows计划任务定期执行PowerShell脚本

    因PowerShel有这特殊的安全策略,在设定Windows计划任务定期执行PowerShell脚本时有些细节需要注意. (1)在本机编写一个测试脚本,保存为PS1脚本: (2)设置Powershel ...

  7. 计划任务执行 php代码,php实现Windows任务计划定时执行的代码以及扩展(图)

    任务计划在我们的日常工作开发中,有很大用处.有时项目需要大批量的数据更新插入数据库中,那么我们为了能够节约资源,需要定时时间段进行自动计算,为此,我们就需要php计划任务来实现,那么我们今天就给大家介 ...

  8. crontab定时任务不执行的原因

    我在网上找的时候发现网上主要说了这5个原因: 1 crond服务未启动 crontab不是Linux内核的功能,而是依赖一个crond服务,这个服务可以启动当然也可以停止.如果停止了就无法执行任何定时 ...

  9. 微软修补Windows零日漏洞,该漏洞允许在Windows计算机上远程执行

    微软在本周最新的Patch Tuesday更新中修补了一个零日漏洞,该漏洞允许在Windows计算机上远程执行,并且已经被利用. CVE-2022-22047 是 Windows 客户端/服务器运行时 ...

最新文章

  1. .net 下直接读分区数据,并生成ISO光盘镜像文件,含DEMO
  2. php图片编辑失真,PHP上传真彩图片缩略图质量失真解决方法
  3. 脑机接口猴子通过“意念”打游戏!马斯克:未来能让瘫痪者用意念玩手机
  4. 小猿圈Web前端开发学习路线
  5. 三分钟Docker-推送本地镜像到仓库
  6. 可以操作excel吗_Excel快速填充,这四种方法你会吗?操作逆天告别加班
  7. c语言float二进制输出代码_C语言学习笔记——学前知识概述
  8. Python写数据结构:循环队列
  9. Stopwatch示例
  10. IE浏览器访问出现Automation 服务器不能创建对象
  11. linux下samba服务器无法访问,解决windows7客户端无法访问Samba服务器的故障
  12. 好听的敕勒川天苍苍野茫茫风吹草低见牛羊
  13. 微信小程序:map组件的简单使用,标注callout与label简单用法
  14. “黑客帝国”只是另一个幻想,但我们痴迷于此
  15. centos7 pe系统安装_centos7 系统安装u盘安装教程无法识别的usb设备管
  16. 基于PHP学生成绩查询系统设计与实现 开题报告
  17. 网络基础之STP生成树和MSTP多生成树协议
  18. Java——计算用户输入的日期离1900年1月1日相距多少天
  19. 最小点权覆盖集最大点权独立集
  20. PIM协议原理与配置

热门文章

  1. android 圆角边框边框渐变,支持边框、圆角、渐变色、透明度的GradientButton
  2. raid5坏了一块盘怎么办_机械硬盘的坏道处理——屏蔽之
  3. html 页面怎么加载富文本,UILabel加载html富文本
  4. 计算机上课创意互动游戏初中,16个课前热身小游戏:让每一堂课都充满新鲜感...
  5. 基于JavaSpringMVC+Mybatis+Jquery高校毕业设计管理系统设计和实现
  6. 《SpringCloud超级入门》使用Eureka编写服务消费者《十一》
  7. kpi绩效考核流程图_公开!松松团队KPI绩效考核表分享
  8. php 解析yaml,php yaml 解析 报错问题
  9. java父类调用子类方法_Java 中父类怎么调用子类的方法?
  10. weblogic 10.3.0.0 for linux下载地址,weblogic10.3下载地址