2017-02-09 17 views
0

До вчерашнего дня я использовал на нашем производственном сервере (CentOS 6.8), PHPDocumentor версии 2.8.5. и все сработало нормально. Мне пришлось перейти на версию 2.9.0. поскольку PHPDoc не удалось создать документацию для PHP7.Бесконечный цикл с PHPDocumentor при вызове из CLI (но отлично через SSH)

Когда я запускаю следующий сценарий через 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 

enter image description here

Но, когда я пытаюсь запустить скрипт с 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); 

ли кто испытал подобное проблема?

ответ

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" 
+0

Вот как я смог установить phpDocumentor 2.9.0. без 'pear' http://askubuntu.com/a/811577/575247 –

+0

Я наблюдаю что-то подобное при включении PHPDocumentor в Composer. Композитор просто висит. –