web-dev-qa-db-ja.com

php4とphp5を一緒に、同じ拡張子で、4をフォルダーに制限します

両方に同じ「.php」拡張子を維持し、サーバー内の特定のフォルダー(+ subfolders)のみがphp4で実行されるようにしながら、同じサーバーにphp 4と5をインストールする方法はありますか?

私はwhm/cpanelを備えたCentOS5.5 x64を持っているので、EasyApacheで両方をインストールできます。その部分は問題ではありません。

これが必要な理由は、古いスクリプトを機能させ続けるためです。 Zendでエンコードされており、php 5.3.xにアップグレードすると壊れます。5.3で実行する場合は再エンコードする必要があるため、5.2(または4.x)でのみ機能します(オプションではありません)。デコードもうまく機能しなかったので、4をフォルダーに制限し、拡張子を変更する必要がなければ、php4/5アプローチが有効な解決策になると思います(明らかに、スクリプトは「.php4」で失敗します。ハードコードされたパスとファイル名)。

私の現在のphp.conf、SuPHPによって処理されます

# SuPHP configuration for PHP5
LoadModule suphp_module modules/mod_suphp.so
suPHP_Engine on
AddType application/x-httpd-php5 .php5 .php .php3 .php2 .phtml
<Directory />
    suPHP_AddHandler application/x-httpd-php5
</Directory>

# SuPHP configuration for PHP4
AddType application/x-httpd-php4 .php4
<Directory />
    suPHP_AddHandler application/x-httpd-php4
</Directory>
2
hikari

Apacheドキュメント によると、AddHandler/AddTypeはディレクトリコンテキストで使用できます。つまり、Apache構成で次のようなことを簡単に実行できるはずです。

LoadModule php5_module modules/libphp5.so
LoadModule php4_module modules/libphp4.so

AddHandler php5-script .php
AddType    text/html .php

<Directory /home/somedir>
     AddHandler x-httpd-php4 .php
</Directory>

インストールによっては、php4/5のセットアップ行がわずかに異なる場合があることに注意してください(既存の構成を確認してください)。すでにphp4と5をセットアップしている場合は、エントリが必要です。

1
uesp