0

直到昨天,我在我们的生产服务器(CentOS 6.8)上使用了 PHPDocumentor 版本 2.8.5。一切正常。我不得不升级到 2.9.0 版。因为 PHPDoc 无法生成 PHP7 的文档。

当我通过 SSH 运行以下脚本时,一切正常:

/[not_a_real_path]/phpdoc --directory=/[not_a_real_path]/gem-mechanic/ --target=/[not_a_real_path]/PC_administration_interface/documentation/gem-mechanic/ --title="GEM-MECHANIC"

/[not_a_real_path]/phpdoc --directory=/[not_a_real_path]/PC_administration_interface/ --target=/[not_a_real_path]/PC_administration_interface/documentation/pc_administration_interface/ --title="PC-ADMINISTRATION-INTERFACE"

/[not_a_real_path]/phpdoc --directory=/[not_a_real_path]/setup/modules/appointmentmanager/ --target=/[not_a_real_path]/PC_administration_interface/documentation/prestashop_appointmentmanager/ --title="PRESTASHOP: APPOINTMENT MANAGER"

/[not_a_real_path]/phpdoc --directory=/[not_a_real_path]/setup/modules/datalinkmanager/ --target=/[not_a_real_path]/PC_administration_interface/documentation/prestashop_datalinkmanager/ --title="PRESTASHOP: DATALINK MANAGER"

/[not_a_real_path]/phpdoc --directory=/[not_a_real_path]/setup/modules/sharedcode/ --target=/[not_a_real_path]/PC_administration_interface/documentation/prestashop_sharedcode/ --title="PRESTASHOP: SHARED CODE"

/[not_a_real_path]/phpdoc --directory=/[not_a_real_path]/setup/modules/vehiclefile/ --target=/[not_a_real_path]/PC_administration_interface/documentation/prestashop_vehiclefile/ --title="PRESTASHOP: VEHICLE FILE"

/[not_a_real_path]/phpdoc --directory=/[not_a_real_path]/shared_code/ --target=/[not_a_real_path]/PC_administration_interface/documentation/shared_code/ --title="SHARED CODE"

echo Options All -Indexes > /[not_a_real_path]/PC_administration_interface/documentation/.htaccess
echo AuthType Basic >> /[not_a_real_path]/PC_administration_interface/documentation/.htaccess
echo AuthName '"Please login"' >> /[not_a_real_path]/PC_administration_interface/documentation/.htaccess
echo AuthUserFile /[not_a_real_path]/PC_administration_interface/.htpasswd >> /[not_a_real_path]/PC_administration_interface/documentation/.htaccess
echo Require valid-user >> /[not_a_real_path]/PC_administration_interface/documentation/.htaccess

在此处输入图像描述

但是,当我尝试使用 PHP 运行脚本时

public static function generateDocumentation() 
{
    $output = array();

    set_time_limit(180);

    self::createDocDirectory();

    exec(self::getScriptPath(false) . " 2>&1", $output);

    return implode($output, PHP_EOL);
}

编码陷入无限循环,没有生成任何文档。我希望页面在 3 分钟后失败,但它只是不断循环......

即使尝试执行 PHPDocumentor,它也会陷入无限循环:

exec("[not_the_real_path]/phpdoc 2>&1", $output);

有没有人遇到过类似的问题?

4

1 回答 1

0

我花了两天的时间努力,但我终于找到了问题的根源。

  1. phpDocumentor.phar需要在执行之前调用 PHP 命令。

  2. 如果 PHP 命令不在包含的路径中,则需要提供完整路径。

不知何故,如果找不到要命令的命令之一,CLI 就会挂起。

这是一个有效命令的示例:

exec("/usr/local/bin/php /usr/local/bin/phpDocumentor-2.9.phar --directory=/home/gem/public_html/gem-mechanic/ --target=/home/gem/public_html/PC_administration_interface/documentation/gem-mechanic/ --title=\"GEM-MECHANIC\" 2>&1", $output);

注意:添加以下代码行:

PATH="/usr/local/bin"

在脚本的开头,您不需要调用 PHP 并包含到达 phpDocumentor 的路径。脚本中的一行可以简单地写成这样:

phpDocumentor-2.9.phar --directory=/home/gem/public_html/gem-mechanic/ --target=/home/gem/public_html/PC_administration_interface/documentation/gem-mechanic/ --title="GEM-MECHANIC"
于 2017-02-10T17:49:03.963 回答