- 16, May 2024
- #1
Я только что перенес систему, которую написал несколько лет назад, на PHP в новую среду с PHP 7.1.4 вместо PHP 5.x. Раньше мои программы работали отлично, но теперь выдают ошибки, многие из которых я никогда раньше не видел.
Я не очень хорошо программирую на PHP, хотя программировал на разных языках, включая Java, поэтому я ни в коем случае не новичок в программировании.
Я читал краткое руководство по обработке ошибок PHP, и они предложили написать функцию обработки ошибок и вызывать ее следующим образом:
Скрипт обнаружил что-то, что может быть ошибка, но может произойти и при обычном запуске сценария."? Или 8 однозначно связана с ошибкой «Неопределенный индекс» в мире, где каждая отдельная ошибка имеет связанное с ней определенное число, например 37 для деления на ноль и 412 для выхода индекса массива за пределы? Я думаю, что это первое, и будут всевозможные ошибки с номером 8, но мои знания PHP отрывочны, поэтому я хочу быть уверенным.
Теперь, если я прав и что 8 — это серьезность ошибки, что обычно следует делать с ошибками E_NOTICE? В идеале я бы хотел, чтобы PHP не отображал это сообщение, и я хотел бы избавиться от него, сделав все, что мне нужно, чтобы PHP не думал, что что-то не так (в отличие от того, чтобы сказать ему не показывать мне ошибки ниже). определенная строгость). В данном конкретном случае строка кода, определенная как источник ошибки, выглядит следующим образом:
В старой системе я никогда не получал никаких ошибок по этому коду.
Но, возможно, старая система хотела показывать мне подобные сообщения, но подавляла мелкие ошибки; Я действительно не знаю.
Я попытался инициализировать эту переменную значением null
Я не знаю, как убедить PHP в том, что переменная была правильно инициализирована, поэтому ему не нужно сообщать мне, что существует неопределенный индекс. Может ли кто-нибудь просветить меня по вопросам, которые я поднял?
Я не очень хорошо программирую на PHP, хотя программировал на разных языках, включая Java, поэтому я ни в коем случае не новичок в программировании.
Я читал краткое руководство по обработке ошибок PHP, и они предложили написать функцию обработки ошибок и вызывать ее следующим образом:
$report_layout = null;
PHP: Я сделал это и получил следующее:
switch($_POST['report_layout']) {
Код (разметка): прав ли я в первой строке, предполагая, что [8] обозначает уровень серьезности ошибки, в частности E_NOTICE, который определяется как «Уведомления во время выполнения.
Скрипт обнаружил что-то, что может быть ошибка, но может произойти и при обычном запуске сценария."? Или 8 однозначно связана с ошибкой «Неопределенный индекс» в мире, где каждая отдельная ошибка имеет связанное с ней определенное число, например 37 для деления на ноль и 412 для выхода индекса массива за пределы? Я думаю, что это первое, и будут всевозможные ошибки с номером 8, но мои знания PHP отрывочны, поэтому я хочу быть уверенным.
Теперь, если я прав и что 8 — это серьезность ошибки, что обычно следует делать с ошибками E_NOTICE? В идеале я бы хотел, чтобы PHP не отображал это сообщение, и я хотел бы избавиться от него, сделав все, что мне нужно, чтобы PHP не думал, что что-то не так (в отличие от того, чтобы сказать ему не показывать мне ошибки ниже). определенная строгость). В данном конкретном случае строка кода, определенная как источник ошибки, выглядит следующим образом:
Error: [8] Undefined index: report_layout File/Line: /storage/h13/139/1556139/public_html/SideTrekkedContributions.php/28
PHP: Черт меня побери, если я смогу понять, что здесь не так.
В старой системе я никогда не получал никаких ошибок по этому коду.
Но, возможно, старая система хотела показывать мне подобные сообщения, но подавляла мелкие ошибки; Я действительно не знаю.
Я попытался инициализировать эту переменную значением null
//Error handler function function customError($errno, $errstr, $errfile, $errline, $errcontext) { echo "<b>Error:</b> [$errno] $errstr<br>"; echo "<b>File/Line:</b> $errfile/$errline<br>"; //echo "<b>Error context:</b><br>"; //print_r($errcontext); echo "....Ending Program"; die(); } //Set error handler set_error_handler("customError",E_ALL);
PHP: но это НЕ предотвратило появление ошибки.
Я не знаю, как убедить PHP в том, что переменная была правильно инициализирована, поэтому ему не нужно сообщать мне, что существует неопределенный индекс. Может ли кто-нибудь просветить меня по вопросам, которые я поднял?