Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Ассоциативный массив и кавычки
Покинул форум
Сообщений всего: 30
Дата рег-ции: Февр. 2008
Помог: 0 раз(а)
Как для новичка, мне не ясен такой момент...
Есть сторонняя, довольно большая и наворочанная программа. Когда я ее в первый раз запустил, то увидел в браузере не интерфейс программы, а длиннющий список ошибок, уходящий глубок вниз браузера. Начал разбираться в чем дело и понял, что все ассоциативные массивы написаны в коде этой программы таким образом:
$G[country] = 7;
а не так:
$G['country'] = 7;
и не так:
$G["country"] = 7;
То есть, имя в ассоциативном массиве не берется в кавычки. Если в настройках самого PHP, в файле php.ini директиву написать так:
display_errors = Off
то ошибки в браузере сразу пропадают и программа начинает замечательно работать. И вроде бы, можно было бы про это дело забыть. Но потом вылезла другая бяка. В "лог-файл" самого веб сервера Апач, в его родной файл error.log, начали писаться те же самые сообщения об ошибках, что были до этого в браузере. За ночь работы этой программы, лог-файл мог вырасти до 2ггб!!!
Не могу понять, как это должно лечится. Пока вижу для себя лишь один способ. Переписывать весь код этой проги и поставить везде кавычки. Это конечно можно сделать, но я просто не уверен, правильно ли это будет. Может что-то нужно в самом PHP настроить, и тогда такое написание станет вполне возможным и разрешенным? Скажите, плиииз!!!
Связка:
Windows XP SP-2
Apache HTTP Server v2.2.4
PHP v5.2.3
MySQL v5.0.45
----- Нет в русском языке слова дешеГО. Есть слово дешеВО.
RomAndry
Отправлено: 24 Марта, 2008 - 09:44:51
Частый посетитель
Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008
Помог: 6 раз(а)
Можно отключить вообще вывод ошибок и запись их в лог, но я бы посоветовал всеже поставить кавычки!
EuGen
Отправлено: 24 Марта, 2008 - 09:46:51
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Вам скорее всего, проще настроить Apache так, чтобы не логировались ошибки.
Автор программы, видимо, не слишком утруждал себя контролем таких вещей. Правильно, конечно, указывать все ключи ассоциативных массивов в кавычках.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
SlavikSG
Отправлено: 24 Марта, 2008 - 11:00:48
Новичок
Покинул форум
Сообщений всего: 30
Дата рег-ции: Февр. 2008
Помог: 0 раз(а)
Ага, понял. Пасиб!
Значит это все же небольшой ляп со стороны разработчиков. Я уж было подумал, что оба варианта написания кода правильные и что у меня что-то на так в ПХП настроено.
Тогда у меня возникает другой вопрос. Сори, не по теме. Отключение записи в лог файл Апача ошибок не приведет ли к отключению записи туда вообще всех ошибок? Это было бы крайне нежелательно делать.
----- Нет в русском языке слова дешеГО. Есть слово дешеВО.
EuGen
Отправлено: 24 Марта, 2008 - 11:45:41
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Если у Вас система построена на VirtualHost то нет.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
SlavikSG
Отправлено: 24 Марта, 2008 - 13:45:15
Новичок
Покинул форум
Сообщений всего: 30
Дата рег-ции: Февр. 2008
Помог: 0 раз(а)
Понял. В общем, нужно изменять код. В будущем, по любому это будет удобнее.
Всем спасибо!
----- Нет в русском языке слова дешеГО. Есть слово дешеВО.
valenok
Отправлено: 24 Марта, 2008 - 15:56:37
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
Цитата:
Я уж было подумал, что оба варианта написания кода правильные
Ак так можно было подумать если вам php пишет: Ошибка
А для переписки кода можно воспользоваться одним и многих редакторов кода
поддерживающих автозамену с регулярными выражениями. ( Editplus.com поддерживает )
----- Truly yours, Sasha.
SlavikSG
Отправлено: 25 Марта, 2008 - 08:19:00
Новичок
Покинул форум
Сообщений всего: 30
Дата рег-ции: Февр. 2008
Помог: 0 раз(а)
valenok пишет:
Цитата:
Я уж было подумал, что оба варианта написания кода правильные
Ак так можно было подумать если вам php пишет: Ошибка
Дык, ведь все же позволяет он так писать, если выключить контроль ошибок! Вот я и подумал, что если выключить или включить в настройках PHP еще что-то, то вообще все станет шоколадным.
valenok пишет:
А для переписки кода можно воспользоваться одним и многих редакторов кода
поддерживающих автозамену с регулярными выражениями. ( Editplus.com поддерживает )
Вряд ли там прокатят регулярные выражения. Где-то кавычки все же есть, где-то их нет. Где-то кавычки нужно ставить, где-то нет. Где-то нужно учитывать знак $, где-то не нужно. В общем, по любому, нужно контролировать все глазами, которые сломаются уже через 15 минут такой автозамены. Одна малейшая ошибка может привести к ошибке, которую потом фиг найдешь, учитывая, что это чужой код, а не мой.
----- Нет в русском языке слова дешеГО. Есть слово дешеВО.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.