2013-11-25 2 views
1

Я (как и многие другие) вижу сильные ошибки в стандартах с PHP 5.4. ???.PHP - Строгая ошибка стандартов с 5.4.?

Строгие стандарты: только переменные должны быть переданы по ссылке в /home/xxxxxx/public_html/xxxxxx/init.php на линии 64

Там должно быть изменение между 5.3 и 5.4. Вся «мудрость» в Интернете, похоже, отключает сообщения об ошибках. В этом случае это программа (1000 строк строк, написанная кем-то еще), которую я не желаю пытаться решить.

Если я отключу отчет об ошибке, сценарий не будет выполнен.

Я пытаюсь решить проблему с автором сценария.

Есть ли другое решение? Есть ли параметр, который может быть помещен в файл .htaccess, который позволит «нестандартные стандарты»?

+1

Вы в основном есть два варианта: исправить ошибки или включить сообщения об ошибках _strict_ выключен (с 'error_reporting (E_ALL^E_STRICT), например). – raina77ow

+0

Кстати ... строка кода - это грязное дело вроде: define («INSTALL_URL», $ protocall. $ Host_name. Str_replace («/». Array_pop (explode («/», $ _ SERVER ['REQUEST_URI' ])), "/", $ _ SERVER [ 'REQUEST_URI'])); – Eric

+0

FWIW, проблема в этой строке - это 'array_pop', который хочет изменить свой аргумент (он удаляет элемент, а также возвращает его), но не может, потому что ему дается возвращаемое значение' explode', а не переменная. – IMSoP

ответ

2

Вы должны войти в свой файл php.ini и назначить следующее:

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT  

Это позволит показать все предупреждения, за исключением устаревших & нестрогих стандартов.

+0

У меня есть сделал это в моем php.ini. Сценарий все еще выполняется и возвращает пустое (знак, что есть ошибки). Я добавил к скрипту error_reporting (E_ALL); и до сих пор не сообщается об ошибках. – Eric

+0

Поскольку он не печатает никаких ошибок, это означает, что он делает то, что предназначено. Другими словами, это позволяет использовать нестандартные стандарты. Из-за этого проблема не в том, сообщают ли строгие стандартные ошибки, а что-то в вашем скрипте. Выведите, что это действительно не ваш сценарий, это неправильно. – KLVTZ

1

Если вы хотите, чтобы исправить ошибку, а не игнорировать его (порекомендован):

$uri = explode("/",$_SERVER['REQUEST_URI']); 
define("INSTALL_URL" , $protocall.$host_name . str_replace("/".array_pop($uri),"/",$_SERVER['RE‌​QUEST_URI'])); 
Смежные вопросы