Установка 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? Таким образом, я мог бы сообщить ему список каталогов или использовать несколько < Directory > блоки с файлами php в этих каталогах запускаются как php4.

спасибо, - Кит

0
задан 17 July 2012 в 22:28

3 ответа

php4 и php5 несовместимы друг с другом. Вам нужно будет либо использовать старую неподдерживаемую версию (которую вы будете собирать из исходного кода), либо использовать php5 и обновить свои системы. Вы не можете запустить их обоих одновременно без поломок.

0
ответ дан 17 July 2012 в 22:28

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

Для второго вопроса можно действительно сделать это.

Однако необходимо сказать 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 файле или в апачском conf файле (который требует прав перезапустить апачский сервер).

ОБНОВЛЕНИЕ: чем больше я думаю о своем ответе, тем меньше я думаю, что он будет работать. Проверяя файл mod_php5 conf, я вижу, что обработчик на самом деле установлен против типа пантомимы application/x-httpd-php таким образом, необходимо было бы скорректировать это также, я думаю.

Таким образом, возможно, переписывание является лучшим.

Существует другая возможность все же. Если у Вас есть доступ к апачским конфигурационным файлам, Вы могли бы опустеть /etc/apache/mods-available/php5.conf и переместите содержание в сайт определенная конфигурация. Затем Вы могли поместить php4 определенную конфигурацию в другой виртуальный хост или даже в папку - хотя в этом случае, необходимо будет, вероятно, включать конфигурацию php5 в несколько мест (для каждой папки корневого каталога приложения на веб-сервере).

ОБНОВЛЕНИЕ 2: На самом деле ответ на quesition 1 - также "да", это, на самом деле возможно. Можно выполнить обоих путем использования suPHP. Хотя необходимо считать о возможных ограничениях выполнения PHP этот путь.

0
ответ дан 17 July 2012 в 22:28

Вы можете настроить php4 для работы под другим веб-сервером, apache 1.3 или lighthttpd. Просто установите этот веб-сервер для прослушивания на другом порту (не на порту 80), и либо используйте его напрямую, либо настройте некоторое количество перезаписывающих файлов в apache2 для направления запросов php4 на другой веб-сервер.

Это было бы много работы и настройки, хотя, возможно, больше, чем просто использование CGI.

0
ответ дан 17 July 2012 в 22:28

Другие вопросы по тегам:

Похожие вопросы: