|
|
|
| Привет всем! Тема такая:
Стоит новый PHP и при включении сообщений об ошибках просто ими закидал, половину разобрал сам, осталось то к чему ум приложить не могу, вот что он выдает:
Notice: Undefined offset: 4 in /var/www/xxx/yyy/script.php on line 4
Notice: Undefined offset: 3 in /var/www/xxx/yyy/script.php on line 4
Notice: Undefined offset: 2 in /var/www/xxx/yyy/script.php on line 4
А вот собственно и 4-я строка скрипта:
list($address['p1'],$address['p2'],$address['p3'],$address['p4'],$address['p5'])=explode(".",$_SERVER['SERVER_NAME']);
Думаю комментарии излишне, все ясно и так. В старой версии PHP этот код работал как автомат калашникова, а в новой капризной к синтаксису нет. Мое предположение что ругается на explode. Разбивал эту строку и номер менялся на тот где стоит explode.
Пытался найти решение гуглами, и яндексами а находил только успешно проиндексированные страницы со схожими ошибками. Помогите плиз. | |
|
|
|
|
|
|
|
для: seletsky
(18.05.2010 в 17:20)
| | в начале скрипта сделай
error_reporting(0);
Хотя это избавит от всех ошибок, т.е. не будет выводиться ни одна ошибка...
можно попробовать вот так:
error_reporting(E_ALL ^ E_NOTICE);
Что избавит тебя от занозы | |
|
|
|
|
|
|
|
для: Tonik992
(18.05.2010 в 17:26)
| | Но это не способ решения проблемы. Я их специально включил для тестирования модулей. | |
|
|
|
|
|
|
|
для: SeletSKY
(18.05.2010 в 17:30)
| | а с чего Вы взяли, что explode Вам столько элементов вернет?
и что Вы потом делаете со всеми
$address['p1'],$address['p2'],$address['p3'],$address['p4'],$address['p5'] ? | |
|
|
|
|
|
|
|
для: root
(18.05.2010 в 17:40)
| | А что здесь в общем не понятного то?
допустим есть адрес www.name1.name2.ru
Отсюда следует ->
$address['p1']=www
$address['p2']=name1
$address['p3']=name2
$address['p4']=ru
$address['p5']= null
Какая разница что потом с ними делаю и из этого можно сделать вывод что идет разбор доменного имени.. что это даст Вам? Думаете все скрывается в пятом пустом $address['p5']? | |
|
|
|
|
|
|
|
для: SeletSKY
(18.05.2010 в 18:06)
| | А функции работы с url, чем вам не подходят?
Ошибки следуют из вашего заблуждения. | |
|
|
|
|
|
|
|
для: seletsky
(18.05.2010 в 17:20)
| |
<?
$expld = explode(".", "softtime.ru");
$address['p1'] = $expld[0];
$address['p2'] = $expld[1];
$address['p3'] = $expld[2];
$address['p4'] = $expld[3];
$address['p5'] = $expld[4];
| Что произойдёт при исполнении этого кода? | |
|
|
|
|
|
|
|
для: Саня
(18.05.2010 в 18:48)
| | Александр, если я по Вашему заблуждаюсь, так укажите в чем, мы же не в школу играем!? Тот код нужен для настройки сайта для работы по определенным доменам, в разных зонах с поддоменами. Необходим разбирать адрес и правильно реагировать. Повторюсь в ранней версии php все работало отлично, и сейчас работает, но вечное сообщение ломает картину работающего сайта. Что надо сделать чтобы убралось это сообщение, не простым отключением сообщений, а правильно сделать чтобы сообщение пропало. После перехода на новую версию пхп много ошибок вылетело, все разгреб осталось это. | |
|
|
|
|
|
|
|
для: SeletSKY
(18.05.2010 в 19:02)
| | Я вроде тонко намекнул в чём проблема. Если не понимаете тонко, тогда попробую толсто:
в list() нельзя передавать переменных больше, чем есть элементов в массиве.
В ранних версиях, возможно, это поведение было другим, но сейчас оно именно такое.
И не надо так бурно реагировать. Мы же не в школе... | |
|
|
|
|
|
|
|
для: Саня
(18.05.2010 в 19:19)
| | Извини если что-то "бурно" реагирую, но пока я только получал ответ вопросом на вопрос. В лист переменных больше попасть не может, только меньше, остальная часть массива останется пустой. Может в этом дело, я понять не могу, так может дойдем до логического объяснения в ходе рассуждения | |
|
|
|
|
|
|
|
для: SeletSKY
(18.05.2010 в 19:32)
| | Правильно — останется пустой. О чем PHP заботливо извещает своим notice.
Причину этого я проиллюстрировал в (18.05.2010 в 18:48) | |
|
|
|
|
|
|
|
для: Саня
(18.05.2010 в 19:43)
| | Спасибо, Саш за помощь. Я заменил на $address=explode(".",$_SERVER['SERVER_NAME']); и полность перепишу этот скрипт | |
|
|
|