[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Undefined variable на сервере DENWER
m4a1fox
Доброй всем ночи. Суть проблемы такова. Делал сайт на linux системы с использование чистых apache2+MySQL+PHP5. Но как только перевожу сайт на windows c использованием пакета DENWER то вылезает такая ошибка
 Undefined variable 
.
Наверняка это реально исправить в настройках httpd.conf. или нет. Только могу предположить. И еще. Скажите, что лучше? DENWER или apache2+MySQL+PHP5? Просто хочу услышать ваше мнение?



Спустя 5 минут, 17 секунд (30.03.2011 - 20:49) alex12060 написал(а):

<?php

echo $var;

?>



<?php
$var = null;

echo $var;

?>


Разница есть?

Спустя 4 минуты, 40 секунд (30.03.2011 - 20:54) m4a1fox написал(а):
alex12060
Вроде да. Первая - переменная не определена. А второе - переменная - пуста.

Спустя 3 минуты, 3 секунды (30.03.2011 - 20:57) alex12060 написал(а):
чтобы такого небыло, есть 4 варианта:
  • Меняй в php.ini с error_reporting = E_ALL на error_reporting = E_ALL & ~ E_NOTICE
  • Ставь вначале скрипта error_reporting(E_ALL & ~ E_NOTICE);
  • Либо в .htaccess пиши php_falg error_reporting "E_ALL & ~ E_NOTICE"
  • Либо инициализируй везде переменные с начальным значением null

Спустя 46 секунд (30.03.2011 - 20:57) alex12060 написал(а):
Цитата
Undefined variable


C англ. Неопределенная переменная

Спустя 16 минут, 14 секунд (30.03.2011 - 21:14) inpost написал(а):
m4a1fox
Эта беда, так как нарушена логика, обращается к переменной там, где не должна.
Можно писать так: echo @$var; если не всегда она определена.

Спустя 10 минут, 30 секунд (30.03.2011 - 21:24) Trianon написал(а):
alex12060
Как минимум первых трех вариантов предлагать не стоило бы.
Поскольку от неопределенных переменных ни один из них не избавляет.

Спустя 7 минут, 40 секунд (30.03.2011 - 21:32) alex12060 написал(а):
Trianon

Не избавляет, но нотисы убивает.

Спустя 7 минут, 42 секунды (30.03.2011 - 21:40) Trianon написал(а):
alex12060
После чего разработчик теряет контроль над ситуацией чуть более чем полностью.

Спустя 6 минут, 17 секунд (30.03.2011 - 21:46) alex12060 написал(а):
Trianon

Я уверен, что это банальные замешательства, и небольшие недочеты, которые впоследствии будут устранны. Но, конечно-же, соглашусь, что даже нотисов быть не должно в скриптах.

Спустя 1 час, 20 минут, 26 секунд (30.03.2011 - 23:06) 7ion написал(а):
m4a1fox

В начале скрипта пропиши error_reporting(E_ALL); и тяни эту строчку из проекта в проект.
Избавиться от этого нотиса можно либо проверяя переменную empty, либо объявив ее согласно типу, в котором она будет использоваться.

Спустя 1 час, 23 минуты, 44 секунды (31.03.2011 - 00:30) Trianon написал(а):
7ion
значение error_reporting проще прописать в .htaccess

Спустя 1 час, 9 минут, 32 секунды (31.03.2011 - 01:40) Invis1ble написал(а):
m4a1fox
Я бы не советовал тебе заглушать ошибки, понижая уровень их отображения.
Нужно учиться правильно кодить, а именно - инициализировать все переменные перед их использованием. Подавление ошибок, не важно каким способом, как уже заметил Trianon, ставит разработчика в незавидное положение, когда он теряет контроль над собственным кодом.
Насчет сервера: чесно говоря никогда не пользовался денвером, имхо, лучше использовать "чистую" связку и настраивать ее самому. Больше опыта получишь и будешь знать, как что выставляется. Вот например, у меня есть товарищ, который довольно хорошо разбирается, но до сих пор не знает некоторых элементарных настроек в php.ini, потому что всегда пользовался denwer'ом.

Спустя 52 минуты, 23 секунды (31.03.2011 - 02:32) inpost написал(а):
Invis1ble
Хорошо, что ты не про меня пишешь, потому что я даже денвером не пользуюсь =)))

Спустя 9 минут, 54 секунды (31.03.2011 - 02:42) Invis1ble написал(а):
laugh.gif

Спустя 2 часа, 8 минут, 29 секунд (31.03.2011 - 04:50) kirik написал(а):
Цитата (inpost @ 30.03.2011 - 18:32)
я даже денвером не пользуюсь

inpost - человек-php интерпритатор!

Спустя 57 минут, 6 секунд (31.03.2011 - 05:47) inpost написал(а):
kirik
smile.gif

Спустя 7 часов, 48 минут, 46 секунд (31.03.2011 - 13:36) m4a1fox написал(а):
Всем спасибо за подсказки. Как я понял таких сообщений об ошибка вообще не должно быть. И переменные необходимо инициализировать сразу. Но если так, то теперь придется кучу кода переделать. И если честно не понимаю, именно логически, почему так происходит. По сути, ошибка возникает, если в коде не определенна переменная, но ведь она становится определенной, после того как я совершу действие. Вот собственно не понятно, почему чистая связка apache2+MySQL+PHP5 на это не так ругается как DENWER. Если можно, не могли бы вы привести пример.... Спасибо.

Спустя 3 часа, 39 минут, 53 секунды (31.03.2011 - 17:16) inpost написал(а):
m4a1fox
при чём тут denwer или чистая связка? php.ini, там стоит настройка отображать Нотисы и отображать варнинги. Там ON, там OFF, в этом разница, одинаково настрой их, разницы не будет.

Спустя 4 часа, 24 минуты, 8 секунд (31.03.2011 - 21:40) kirik написал(а):
Цитата (m4a1fox @ 31.03.2011 - 05:36)
но ведь она становится определенной, после того как я совершу действие

Так сначала нужно совершать это действие, чтобы определить переменную, а потом уже совершать действия над ней smile.gif

Спустя 50 минут, 56 секунд (31.03.2011 - 22:31) Painerman написал(а):
Меня тоже раздражают подобные ошибки и тоже приходится писать ph34r.gif
$var='';
или постоянно проверять
if(isset($var)) echo $var;
else echo "Ну и хрен с ней"; smile.gif

Спустя 4 минуты, 51 секунда (31.03.2011 - 22:36) Trianon написал(а):
входные параметры можно спокойно получать конструкцией вроде
$var = @$_GET['id'];

А остальные переменные всяко должны появляться исключительно с ведома программиста, так что проблема надумана напрочь.

Спустя 23 минуты, 54 секунды (31.03.2011 - 23:00) m4a1fox написал(а):
Trianon
Решил пока не парится по этому поводу. Всяко рано или поздно приду к этому. Но пока что оставлю. Всем спасибо за подсказки.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.