代码之家  ›  专栏  ›  技术社区  ›  Duroth

PHP中的shell\u exec()不执行我的特定命令

  •  1
  • Duroth  · 技术社区  · 14 年前

    我目前正在用PHP构建一个类,该类使用 WKHTMLTOPDF

    为此,我使用一个对shell\u exec的调用来调用WKHTMLTOPDF可执行文件。然而,这个特定的调用似乎没有被执行;它几乎立即返回NULL。

    我做了一个小测试,结果如下:

    var_dump(shell_exec('ping nu.nl'));
    // This prints a string, containting the expected output of the ping command
    var_dump(shell_exec('"c:/wkhtmltopdf/wkhtmltopdf.exe" --orientation "Landscape" --page-size "A2" --margin-top "25mm" --margin-left "20mm" --margin-bottom "20mm" --margin-right "20mm" "http://www.nu.nl/" "C:/Temp/1280310218.pdf"'));
    // This prints NULL
    

    shell_exec() 似乎也在起作用 safe_mode 关闭,并将完整命令粘贴到cmd.exe中 正确运行命令。

    shell\u exec()

    (注意:虽然我是在Windows机器上开发的,但这段代码将在生产环境中的Linux服务器上运行。因此,只有windows的解决方案不是我想要的,除非这个问题本身证明与windows有关)

    3 回复  |  直到 14 年前
        1
  •  1
  •   Piotr Müller    14 年前

    通过在temp dir中使用fopen()创建文件来检查权限。 它是否创建pdf?也许这个程序没有输出到stdout,但是stderr和ffmpeg是一样的。尝试添加“2>&你命令后1英寸。

        2
  •  0
  •   Guillaume Lebourgeois    14 年前

    您可以使用php库来实现这一点,这将更加高效和集成。举个例子 html2pdf .

        3
  •  -1
  •   jonsca    12 年前

    删除这些环境变量设置>&燃气轮机;

    "DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
    
    #export DYLD_LIBRARY_PATH