Не используйте кавычки в переменных php - PullRequest
0 голосов
/ 24 декабря 2011

В моем xampp он возвращает следующую ошибку, когда я вызываю функции без кавычек ($_SERVER[SERVER_NAME])

Notice: Use of undefined constant SERVER_NAME - assumed 'SERVER_NAME'

Что я должен изменить в php.ini, чтобы исправить это?

Спасибо

ОБНОВЛЕНИЕ: :) Конечно, я знаю, что если я добавлю кавычки, это будет работать, но мне нужно настроить сервер для работы без кавычек.

Iчетко укажите мою проблему.На моем сервере он не возвращает предупреждений и ошибок, если я не использую кавычки.Это зависит от версии xampp.Теперь я устанавливаю более новую версию xampp на свой локальный компьютер, и это показывает, что уведомления, так что я не могу использовать свои последние проекты, потому что есть множество этих уведомлений.(он возвращает такое уведомление, даже когда я использую свои определенные переменные, например $myVariable[myItem]).

я могу использовать

error_reporting(0)

Но это скроет все ошибки.Поэтому мне нужно просто указать новые правила для моего сервера или использовать более старую версию.


Итак, почему отрицательные голоса?


Ответы [ 5 ]

3 голосов
/ 24 декабря 2011

Отредактируйте свой php.ini, чтобы отключить создание отчетов о уведомлениях. найдите свой php.ini, выполнив phpinfo ()

error_reporting = E_ALL ^ E_NOTICE

Или сделать это в сценарии

<?php
error_reporting(E_ALL ^ E_NOTICE);

также рассмотрите возможность установки display_errors = Off для живых веб-сайтов.

2 голосов
/ 24 декабря 2011

Это не константа, это ассоциативный индекс. Используйте цитаты:

$_SERVER['SERVER_NAME'];

Редактировать: Если это в производственной среде, и вам просто нужно скрыть эти сообщения, чтобы выиграть время, чтобы исправить реальную проблему, добавьте это на свою страницу:

// Turn off all error reporting
error_reporting(0);
1 голос
/ 30 сентября 2012

Ответ заключается в том, что ребята, написавшие PHP, решили изменить его для согласованности во внутреннем устройстве PHP, игнорируя последствия удобства использования для программистов PHP, и теперь вам приходится мириться с этим.Таким образом, перед вами стоит сложный выбор: отключить все уведомления или обновить все ваши определения PHP.

PHP4 допускает определение констант без кавычек, и это не проблема.Но я импортирую очень хороший код PH4 в PHP5, и он ломается только по той причине, что «ты плохой программист».

Если авторы PHP хотели сделать что-то действительно полезное, то как насчет уведомления о том, когдапеременная, которая не была установлена ​​(то есть использовалась как lvalue в выражении), используется.Мне приходилось иметь дело с сотнями ошибок, вызванных ошибочными именами переменных без каких-либо предупреждений из PHP.

1 голос
/ 24 декабря 2011

Не меняйте php.ini, измените код:

$_SERVER['SERVER_NAME']

Также это не называется вызовом функции. $ _ SERVER - это ассоциативный массив

Обновление

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

1 голос
/ 24 декабря 2011

Не меняйте конфигурацию, чтобы исправить свои плохие привычки кодирования.Вот что вы должны сделать:

$_SERVER['SERVER_NAME']

не это

$_SERVER[SERVER_NAME]

Вы можете установить уровень ошибки, чтобы игнорировать предупреждения, ноВы можете пропустить некоторые другие важные предупреждения, если вы сделаете это.Просто сделай это правильно.

...