php: предупреждение о предупреждениях на другой машине - PullRequest
5 голосов
/ 05 мая 2011

Я установил все свои php-файлы на новую машину и получаю много предупреждений.

мой код работает без ошибок на моей старой машине.

например.следующая строка (которая должна получить значение набора записей) вызовет уведомление: $ ID = $ rs [id];

причина в том, что отсутствуют пропущенные кавычки для полей id, но также такие вещи, как вызов $ _GETнесуществующее значение будет вызывать уведомления.

Кто-нибудь знает, в чем причина этого?Я хотел бы сохранить «простой» способ кодирования, как на моей старой машине, без необходимости возиться с кавычками на наборах записей или тоннами isset () - есть идеи?

спасибо

Ответы [ 4 ]

5 голосов
/ 05 мая 2011

Установка PHP на новой машине имеет более надежную конфигурацию, которая показывает уведомления, а не только ошибки.Это хорошо.Я бы никогда не написал и не принял на своем сервере скрипт PHP, который генерирует некоторые уведомления.

Этот вид «ленивого» кодирования (простите, я хочу помочь вам!) Приводит к будущим проблемам (код трудночитать и отлаживать) и, косвенно, из соображений безопасности («ленивый» код часто ошибочен).Исправьте все, что вызывает уведомление.:)

И, если можете, изучите более продвинутый PHP: займитесь объектно-ориентированным программированием, инкапсуляцией, сокрытием информации и т.д.Старые PHP-скрипты, построенные на подавлении уведомлений и register_globals, были в некотором роде дампом.

4 голосов
/ 05 мая 2011

Причина уведомления в том, что у вас есть «неопределенная константа». Если вы не ставите кавычки вокруг предполагаемой строки, php будет рассматривать ее как константу. Если он не определен, php рассматривает его как сильный. Возьмите следующий пример:

$array = array(
   'one' => 'right'
   , 'two' => 'wrong'
);
define('one', 'two');

echo $array[one]; //echoes "wrong"

Кроме того, вы получите уведомление, если попытаетесь обратиться к ключу в массиве, который не определен (например, $array['three']; выше). PHP достаточно хорош, чтобы сделать это для вас, так как другие языки будут ошибаться (или хуже).

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

3 голосов
/ 05 мая 2011

Похоже, ваш уровень сообщений об ошибках отличается на разных машинах.Сравните уровни error_reporting в php.ini на разных компьютерах.

1 голос
/ 05 мая 2011

Похоже, у вас на обоих серверах установлено различное значение error_reporting . Проверьте ваш php.ini и установите соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...