Intereting Posts
Как вы включаете несколько страниц в один файл с включенным php? Когда я использую статические переменные / функции в php? Как получить все привязки матчей подгрупп с preg_match_all ()? Отправка полученных заказов woocommerce дилерам, отправляющим уведомления по электронной почте php geo ip loc не работает PHP Сохранение сеансов в базе данных. Метод чтения, похоже, не работает Android: запрос строки Volley onresponse не вызывается Как отключить кнопку заднего браузера после того, как пользователь выйдет из системы и уничтожит сеанс? автозапуск на другие сайты php script Php включает файл в другую папку, в которую входит другой файл Определять ориентацию видео и автоматически поворачивать при необходимости Как отображать уже выбранные переключатели пользователя после входа в symfony2 Как вычислить crc16 в php Ошибка с Internet Explorer и JQuery Ajax Как ограничить использование памяти ffmpeg

PHP cli-скрипт ничего не выводит

Поэтому у меня есть php-скрипт, который я выполняю, используя следующую команду:

php -f my_script.php myArguments 

Скрипт находится под управлением версии с помощью svn. Я просто обновил его, вставил команду, чтобы запустить ее в терминал, и выполнил ее. Однако выхода нет. Не сообщение об ошибке, а не печать ничего, ничего. Похоже, он никогда не начинается. Вид вроде следующего:

 me:/srv/scripts# php -f my_script.php myArguments me:/srv/scripts# 

Другие скрипты будут работать отлично.

Мне трудно придумать SSCCE, так как я не могу действительно поделиться кодом, который вызывает это, и я не смог воспроизвести это поведение намеренно. Я, однако, видел это дважды сейчас. Если я сохраню свои изменения, верните файл и вставьте их обратно, есть большая вероятность, что он будет работать нормально.

Тем не менее, меня беспокоит не зная, что вызывает это странное поведение. Есть ли пробельный символ или что-то, что говорит PHP не запускать или ничего выводить?

Вот что я пробовал, увидев это поведение:

  • Изменение скрипта, так что это просто echo 'hello'

  • Ввод бессмыслицы в начале скрипта, поэтому он не поддается изучению.

  • Вставка кода из рабочего скрипта

  • Раздражение головы на стене

  • Попытка его в другом соединении ssh терминала / шпатлевки.

Вот где это становится интересным: он действительно работает в другом терминале. Он делает все, как ожидалось.

Так есть ли у кого-нибудь какие-либо идеи, что может быть причиной этого, или вещи, которые я должен попробовать, чтобы определить проблему?

РЕДАКТИРОВАТЬ:

«Разный терминал» все еще является терминальным приложением, просто новым.

У меня есть достаточные разрешения для выполнения файла, но даже если я этого не сделал, он должен выплюнуть сообщение о том, что я этого не делаю.

Я намеренно ввел синтаксические ошибки в надежде, что я получу PHP, чтобы выплюнуть ошибку синтаксического анализа. По-прежнему не было выхода.

Solutions Collecting From Web of "PHP cli-скрипт ничего не выводит"

display_errors может быть отключен до выполнения. Вы можете включить его вручную с помощью ключа -d :

 php -d display_errors=1 -f my_script.php myArguments 

Я столкнулся с одной и той же проблемой, и никакое принуждение PHP к display_errors или проверка синтаксиса с помощью -l помогли

Я, наконец, решил нашу проблему, и, возможно, вы сможете найти помощь в этом решении

Проверьте свой скрипт, не используя php.ini:

php -n test_script.php

Это поможет вам отточить реальную причину – конфигурацию PHP, чужой скрипт или ваш скрипт

В моем случае это была проблема с чужим скриптом, который добавлялся через директиву auto_prepend_file в php.ini. (Или, более конкретно, несколько файлов и функций позже, когда я просверлил весь код, добавляя отладку, когда я пошел – на стороне заметки, вы можете обнаружить, что использование fwrite(STDOUT, "debug text\n"); неоценимый при попытке отладки этот тип проблемы)

Кто-то добавил функцию, которая запускалась через файл preend, но использовала символ @ для подавления ошибок для определенного вызова функции. (У вас может быть аналогичная проблема, но не связанная конкретно с php.ini, если у вас есть какие-либо дополнения в вашем тестовом скрипте, приводящие другой код)

Функция была неудачной и вызвала молчаливую смерть PHP, ничего общего с моим тестовым скриптом

Вы найдете всевозможные предупреждения о том, как использование символа @ вызывает точные проблемы, которые у меня были, и, возможно, у вас есть, http://php.net/manual/en/language.operators.errorcontrol.php .

Воспроизведение подобных симптомов:

Возьмите полностью функциональную среду PHP и @xxx_not_a_real_function_name_xxx(); свой вывод CLI, добавив эту вершину вашего скрипта @xxx_not_a_real_function_name_xxx();

Таким образом, у вас может возникнуть проблема с php.ini, или вы (или кто-то еще), возможно, использовали @ не понимая серьезных (и разочаровывающих и трудоемких) последствий, которые он вызывает при отладке