Также известна как Белая страница смерти или Белый экран смерти . Это происходит, когда отчет об ошибках отключен, и произошла фатальная ошибка (часто синтаксическая ошибка).
Если вы включили протоколирование ошибок, вы найдете конкретное сообщение об ошибке в своем журнале ошибок. Обычно это будет в файле php_errors.log, либо в центральном месте (например, /var/log/apache2
во многих средах Linux), либо в самом каталоге самого скрипта (иногда используется в среде совместного размещения).
Иногда может быть более простым временно отображать ошибки. На белой странице отобразится сообщение об ошибке. Будьте осторожны, потому что эти ошибки видны всем, кто посещает веб-сайт.
Это легко сделать, добавив в начале скрипта следующий код PHP:
ini_set('display_errors', 1); error_reporting(~0);
Код включит отображение ошибок и установит отчетность на самый высокий уровень.
Поскольку во время выполнения ini_set()
он не влияет на синтаксические ошибки синтаксиса. Эти ошибки появятся в журнале. Если вы хотите также отобразить их на выходе (например, в браузере), вам необходимо установить директиву display_startup_errors
на true
. Сделайте это либо в php.ini
, либо в .htaccess
или любом другом методе, который влияет на конфигурацию перед временем выполнения .
Вы можете использовать те же методы для установки параметра log_errors и error_log , чтобы выбрать ваше собственное место в файле журнала.
Если вы посмотрите в журнале или используете дисплей, вы получите гораздо лучшее сообщение об ошибке и строка кода, где ваш скрипт останавливается.
Похожие вопросы:
Связанные ошибки:
Они ТОЧНО эквивалентны. Однако в
int *myVariable, myVariable2;
кажется очевидным, что myVariable имеет интервал типа * , в то время как myVariable2 имеет интервал типа . В
int* myVariable, myVariable2;
может казаться очевидным, что оба имеют интервал типа * , но это не корректно, поскольку myVariable2
имеет интервал типа .
Поэтому первый стиль программирования более интуитивен.
Если Вы смотрите на него иначе, *myVariable
имеет тип int
, который имеет некоторый смысл.
Это - просто вопрос предпочтения.
то, Когда Вы читаете код, различая переменные и указатели, легче во втором случае, но это может привести к беспорядку при помещении и переменных и указателей общего типа в одной строке (которому самой часто препятствуют инструкции проекта, потому что удобочитаемость уменьшений).
я предпочитаю объявлять указатели с их соответствующим знаком рядом с именем типа, например,
int* pMyPointer;
Поскольку * в той строке связывает более тесно с переменной, чем к типу:
int* varA, varB; // This is misleading
, Поскольку @Lundin указывает ниже, константа добавляет еще больше тонкости для размышления о. Можно полностью обойти это путем объявления одной переменной на строку, которая никогда не неоднозначна:
int* varA;
int varB;
баланс между кодом разъединения и кратким кодом тверд ударить — дюжина избыточных строк int a;
не хороша также. Однако, я принимаю значение по умолчанию к одному объявлению на строку и беспокойству об объединяющемся коде позже.
Поскольку это имеет больше смысла, когда у Вас есть объявления как:
int *a, *b;