【问题标题】:command working in cmd but not through php shell_exec命令在 cmd 中工作,但不是通过 php shell_exec
【发布时间】:2014-06-14 08:50:05
【问题描述】:

我在 cmd 中有一个命令,如下所示

C:\wamp\www\editor\DocTo-master\exe\docto -f C:\wamp\www\editor\uploaded\uploaded_files_21_original\AffidavitinDIR-4.docx -O "C:\wamp\www\editor\uploaded\uploaded_files_21_original\pdf\21.pdf" -T wdFormatPDF

当我在 cmd 中运行它时,它工作得非常好,并按预期提供输出(doc 到 pdf)。 但是,当我将相同的命令放在 php shell_exec 中时,就像

shell_exec('C:\wamp\www\editor\DocTo-master\exe\docto -f C:\wamp\www\editor\uploaded\uploaded_files_21_original\AffidavitinDIR-4.docx -O "C:\wamp\www\editor\uploaded\uploaded_files_21_original\pdf\21.pdf" -T wdFormatPDF');

我没有在 php.ini 中使用上述代码获得所需的输出。 任何帮助将不胜感激

【问题讨论】:

  • 你必须将 ` \ ` 转义为 ` \\ `
  • 我尝试更换它们,但仍然无法正常工作!
  • 我看到你在运行 wamp,你有没有找到解决这个问题的方法?我在 Windows Server 2016 上安装 xampp 时遇到同样的问题...

标签: php cmd pdf-generation shell-exec docto


【解决方案1】:

似乎大多数问题都与权限或重定向有关。

您当前的用户凭据允许您在该目录中创建文件,但网络服务器用户名呢?

将 stderr 重定向到 stdout 以获取错误信息。

引用对吗?

查看网络服务器错误日志。

【讨论】:

  • 这是我在错误日志文件 FileToConvert:C:\wamp\www\editor\uploaded\uploaded_files_21_original\AffidavitinDIR-4.docx OutputFile:C:\wamp\www\editor\uploaded 中得到的\uploaded_files_21_original\pdf\21.pdf Ext17 *****************************************错误:EOleException 此命令不可用,因为没有打开文档 ************************************* ****错误:退出错误代码:220
【解决方案2】:

我是docto的作者。

这很可能是一个权限问题,因为 php 不一定被授予在您的服务器上运行 word 的正确权限。

我自己在运行 Word 2010 的 Windows 2012 服务器上运行它,它运行良好。 DocTo 安装在 Web 服务器根目录上方的子目录中。

PHP 作为 NTSystem 权限运行

另外我使用的是 exec 而不是 shell_exec 不确定这是否有什么不同

【讨论】:

    【解决方案3】:

    要解决此问题,您必须在以下路径中创建桌面文件夹:

    C:\Windows\SysWOW64\config\systemprofile\Desktop

    C:\Windows\System32\config\systemprofile\Desktop

    然后转到(控制面板\管理工具\服务)并右键单击您的 apache 服务。转到“登录”选项卡并启用“允许服务与桌面交互”选项。

    然后重置您的 apache 服务。

    http://pmlearning.info

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      • 2014-12-29
      • 1970-01-01
      • 2012-07-28
      • 2018-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多