После обновления моего 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-коде. Кроме того, синтаксические ошибки по-прежнему не отображаются, даже с этим методом.
Я потратил часы на это и был бы очень признателен за любую помощь, чтобы это исправить.
Хорошо, я наконец понял это. Приложение, над которым я работал, использует 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
постоянная.
Других решений пока нет …