MAMP PRO 3.2.1 не отображает ошибки PHP

После обновления моего MAMP PRO (на OS X Yosemite 10.10.3) до самой последней версии 3.2.1 он перестал отображать ошибки. В MAMP PRO вы можете установить параметры отображения ошибок в графическом интерфейсе на вкладке PHP. У всего есть флажок (это на немецком языке, но там написано что-то вроде "Все ошибки" [проверено], "Показать" [проверено]).

Когда я проверяю с phpinfo(), display_errors является On а также error_reporting является 32767 (который должен быть эквивалентен E_ALL).

Однако, если я сделаю что-то вроде array_merge(false, array()) Я не получаю ошибки. Если я пропущу точку с запятой (синтаксические ошибки), я получаю пустую страницу.

Я попытался полностью удалить MAMP PRO и переустановить его несколько раз, даже после перезагрузки, но безрезультатно. Все "решения" там говорят, что вы должны поставить display_errrors = On а также error_reporting = E_ALL это то, что у меня есть, также он использует правильный php.ini, который я проверял с помощью phpinfo().

Когда я положил

error_reporting(E_ALL);
ini_set('display_errors', 'On');

в моем коде PHP чуть выше ошибки, например, для array_merge(false, array())Я наконец-то получаю сообщение об ошибке "Message: array_merge(): Аргумент #1 не является массивом", что я и ожидаю, но я хочу получить это сообщение без необходимости использовать ini_set в моем PHP-коде. Кроме того, синтаксические ошибки по-прежнему не отображаются, даже с этим методом.

Я потратил часы на это и был бы очень признателен за любую помощь, чтобы это исправить.

1 ответ

Решение

Хорошо, я наконец понял это. Приложение, над которым я работал, использует Codeigniter и в index.php ENVIRONMENT константа была неправильно установлена ​​в 'production', что в свою очередь установило error_reporting в 0 следующим образом:

case 'production':
    error_reporting(0);
break;

Однажды я установил ENVIRONMENT постоянный для "развития", он работает как ожидалось.

Так почему же это произошло после обновления до последней версии MAMP PRO 3.2.1? Код для настройки ENVIRONMENTпостоянные проверки, если $_SERVER['SERVER_ADDR'] == '127.0.0.1'и если это правда, устанавливает ОКРУЖАЮЩУЮ СРЕДУ:

if ($_SERVER['SERVER_ADDR'] == '127.0.0.1') {
    define('ENVIRONMENT', 'development');   
}

В последнем MAMP PRO, $_SERVER['SERVER_ADDR'] не является 127.0.0.1 больше, но ::1, Список изменений для v3.2 гласит:

Каждый хост получает запись IPv6::1 в /etc/hosts

Довольно сложные вещи. Я сейчас пользуюсь $_SERVER['HTTP_HOST'] вместо $_SERVER['SERVER_ADDR'] установить ENVIRONMENT постоянная.

Другие вопросы по тегам