【问题标题】:exec() or system() on doxygen command returns me "Exiting"doxygen 命令上的 exec() 或 system() 返回“Exiting”
【发布时间】:2010-01-06 14:56:50
【问题描述】:

尝试运行此脚本

public function execDoxygen($doxyFile) {

    $command = "doxygen $doxyFile";

    exec($command, $output);

    return $output;
}

输出是“Exiting...”

如果我在具有相同文件的终端中单独运行它,它运行良好。

如果我运行 exec("doxygen --help") 它可以正常工作。

为什么它不适用于变量?

【问题讨论】:

    标签: php system exec doxygen


    【解决方案1】:

    如果它包含空格或其他 shell 特殊字符,您可能需要先将 $doxyFile 转义为 escapeshellarg()

    编辑记录,这是一个权限问题。有关详细信息,请参阅 cmets。

    【讨论】:

    • 不是逗号看起来是正确的,看转储:命令:doxygen /home/guillaume/Documents/doxygen/Doxyfile-jmk
      输出:array('0'=>'Exiting ...') 我认为 doxygen 不喜欢通过 php 执行...
    • 你可以使用fopen()直接从PHP访问文件吗?
    • 是的,file_get_contents($doxyFile) 返回文件的内容。
    • 也许 stderr 没有出现在 $output 中。你可以试试exec($command." 2>&1", $output);
    • 结果是: array( [0] => '警告:在/home/guillaume/Documents/doxygen/jmk/dot 找不到点工具' ... [ 1] => '无法打开临时文件 /home/guillaume/Documents/doxygen/jmk/doxygen_objdb_8350.tmp' ... [2] => '退出...' ... )
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-17
    相关资源
    最近更新 更多