Intereting Posts
Как установить пакеты Composer PHP без Composer? PHP не отображает ошибки – Внутренняя ошибка сервера (500) Повторяющиеся ключи для ассоциативных массивов PHP ошибка модели codeigniter: неопределенное свойство Как переопределить встроенные функции (ы) PHP? Комбинированные объекты на основе выбранного элемента в другом поле со списком как изменить формат даты в этой пользовательской форме html php: исключение catch и продолжить выполнение, возможно ли это? PHP и пользовательские заголовки HTTP, плохая практика? Как узнать все токены устройств для отправки push-уведомления (APNS) в цикле? jqueryui автозаполнение ограничить несколько выборов Передача mysqli в класс для использования функции Установить файлы cookie в настройках с помощью PHP Отправлять уведомление по электронной почте, когда изменения статуса пользовательского заказа в WooCommerce Как загрузить файлы (multipart / form-data) с помощью многомерных POSTFIELDS с помощью PHP и CURL?

Включить register_globals в PHP 5.4

Я работаю над структурой, которая использует register_globals . Моя локальная версия php – 5.4. Я знаю, что register_globals DEPRECATED с PHP 5.3.0 и УДАЛЕН в PHP 5.4 . Но я должен заставить его работать на PHP 5.4 , есть ли способ? Любая помощь и предложения будут очень заметными. Благодарю.

Вы можете эмулировать register_globals , используя извлечение в глобальной области :

 extract($_REQUEST); 

Или поместить его в независимую функцию, используя глобальные и переменные переменные

 function globaling() { foreach ($_REQUEST as $key => $val) { global ${$key}; ${$key} = $val; } } 

PS Я думаю, что вы выпустили приложение и не хотите ничего менять в нем.

Вы можете создать файл globals.php с помощью

Затем добавьте директиву auto_prepend_file в .htaccess

php_value auto_prepend_file ./globals.php

После того, как эти глобальные значения будут добавлены к каждому вызову

Из руководства PHP в нем говорится, что:

Эта функция была DEPRECATED с PHP 5.3.0 и удалена с PHP 5.4.0.

Однако поиск Google выявил этот метод на форумах Ubuntu :

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

Самое быстрое решение – создать глобалы с нуля, запустив этот код в начале приложения:

Код:

 foreach ($_REQUEST as $key=>$val) { ${$key}=$val; } 

Вы должны быть осторожны, чтобы любая переменная, созданная таким образом, еще не определена в оставшейся части скрипта.

Вы можете заставить этот код запускать перед каждой страницей сайта, используя директиву auto_prepend_file в файле .htaccess.

Я настоятельно рекомендую посмотреть код, требующий register_globals и изменить его так, чтобы он работал правильно, когда он был отключен.

На всякий случай, это может быть полезно, это код, предложенный на php.net для эмуляции register_globals On :

 <?php // Emulate register_globals on if (!ini_get('register_globals')) { $superglobals = array($_SERVER, $_ENV, $_FILES, $_COOKIE, $_POST, $_GET); if (isset($_SESSION)) { array_unshift($superglobals, $_SESSION); } foreach ($superglobals as $superglobal) { extract($superglobal, EXTR_SKIP); } } 

Источник: http://php.net/manual/en/faq.misc.php#faq.misc.registerglobals

В php.ini до:

 auto_globals_jit = On 

После:

 auto_globals_jit = Off