Установка php4 в среде php5
Хотя есть много ответов о запуске php5 и php4 вместе, я не нашел ответов, которые бы соответствовали моему конкретному сценарию.
Я установил новый сервер Ubuntu 12.4, установил apache 2 и PHP 5.3. Мне нужно запустить php 4.4.9 из-за необходимости работать со старой системой CMS, которая была написана давно, все еще поддерживается и сталкивается с ошибками при запуске через php5.
Так что php5 работает как модуль apache.
Я хочу запустить php4, и все указывает на необходимость запустить его как cgi. Я видел решения, в которых людям приходилось менять расширения файлов на.php4 и запускать их через обработчик cgi, но у меня нет такой опции, как для php4 или php5. Слишком много файлов и кодовая база совместно используется.
Первый вопрос, могу ли я установить php4 как модуль? продолжение, какой лучший способ сделать это?
Второй вопрос, могу ли я иметь обработчик, который переключается на php4, делать это по пути к каталогу, а не просто *.php4? Таким образом, я мог бы указать ему список каталогов или использовать несколько блоков
спасибо, Кит
3 ответа
Вы можете настроить php4 для работы под другим веб-сервером, apache 1.3 или lighthttpd. Просто установите этот веб-сервер для прослушивания на другом порту (не на порту 80), и либо используйте его напрямую, либо настройте некоторое количество перезаписывающих файлов в apache2 для направления запросов php4 на другой веб-сервер.
Это было бы много работы и настройки, хотя, возможно, больше, чем просто использование CGI.
php4 и php5 несовместимы друг с другом. Вам нужно будет либо использовать старую неподдерживаемую версию (которую вы будете собирать из исходного кода), либо использовать php5 и обновить свои системы. Вы не можете запустить их обоих одновременно без поломки.
Что касается первого вопроса, я не верю, что это разумно, даже если это возможно - что может быть, я не знаю никого, кто пытался это сделать.
По второму вопросу вы действительно можете это сделать.
Однако вам нужно указать Apache, какой обработчик использовать для папок, содержащих ваше приложение PHP4.
Обычный способ заставить php4 работать как cgi:
Add Handler php-script .php4
Action php-script /cgi-bin/php4
Но это не совсем то, что вы хотите, поэтому нам нужно изменить что-то вроде этого:
RemoveHandler .php
Add Handler php-script .php
Action php-script /cgi-bin/php4
Вам может понадобиться добавить ExecCGI Опция в корневую папку приложения тоже.
Я не могу проверить это в данный момент, так что есть шанс, что это не сработает. В качестве альтернативы, вы можете поместить в переписывание, которое изменило все запросы файла.php на.php4
Обратите внимание, что все это зависит от наличия достаточных прав для внесения этих изменений либо в файл.htaccess, либо в файл конфигурации apache (для которого требуются права на перезапуск сервера apache).
ОБНОВЛЕНИЕ: чем больше я думаю о своем ответе, тем меньше я думаю, что он будет работать. Проверяя conf-файл mod_php5, я вижу, что обработчик фактически настроен на тип mime application/x-httpd-php так что я думаю, тебе тоже нужно это отрегулировать.
Так что, возможно, переписать лучше.
Хотя есть и другая возможность. Если у вас есть доступ к файлам конфигурации Apache, вы можете очистить /etc/apache/mods-available/php5.conf и переместите содержимое в специфическую для сайта конфигурацию. Затем вы можете поместить конкретную конфигурацию php4 в другой виртуальный хост или даже в папку - хотя в этом случае вам, вероятно, потребуется включить конфигурацию php5 в нескольких местах (для каждой корневой папки приложения на вашем веб-сервере).
ОБНОВЛЕНИЕ 2: На самом деле, ответ на вопрос 1 также "да", это на самом деле возможно. Вы можете запустить оба, используя suPHP. Хотя вы должны прочитать о возможных ограничениях запуска PHP таким образом.