- 日本語 (ja)
- English (en)
最近の更新
Tag Cloud
このページへのアクセス
今日: 8 / 昨日: 1
総計: 947
- Dokuwiki.fl8.jp(249)
- 13 CentOS6メール設定(14)
- 02 ProFTPD(12)
- 34 UnboundでHA構成(11)
- FreeBSD カーネル再構築(11)
最近の更新
このページへのアクセス
今日: 8 / 昨日: 1
総計: 947
CentOS 6
PHP 5.3
下記でインストールされている環境を想定
15 CentOS6 suPHP7.2
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
php56と、php71を入れてみる
他にも入れる場合は、同じ要領でインストール
# yum install php56 php56-php-{gd,xml,mbstring,mysqlnd} # yum install php56-php-{opcache,pecl-apcu,pecl-memcached,pecl-zip} # yum install php71 php71-php-{gd,xml,mbstring,mysqlnd} # yum install php71-php-{opcache,pecl-apcu,pecl-memcached,pecl-zip}
handlersをphp56,php71分の用意
/etc/suphp.conf
[handlers] ;Handler for php-scripts x-httpd-php="php:/usr/bin/php-cgi" x-httpd-php56="php:/usr/bin/php56-cgi" x-httpd-php71="php:/usr/bin/php71-cgi"
AddHandler をphp56,php71分と
suPHP_AddHandler をphp56,php71分用意
/etc/httpd/conf.d/suphp.conf
LoadModule suphp_module modules/mod_suphp.so suPHP_Engine on AddHandler x-httpd-php .php AddHandler x-httpd-php56 .php AddHandler x-httpd-php71 .php suPHP_ConfigPath /etc suPHP_AddHandler x-httpd-php suPHP_AddHandler x-httpd-php56 suPHP_AddHandler x-httpd-php71
上記までで設定は完了
後は、phpを使いたいディレクトリに.htaccessを置いてあげるだけです。
※注意
.htaccessで設定する場合に、ちゃんとFilesMatchでphpファイルを指定しないと、
全てのファイルに対して、suphpでアクセスする事になってしまう。
その場合、suphp側ではmimeを判断しないので、php.iniの下記を参照し
全てのcontents-typeがtext/htmlになってしまう。
php.ini
default_mimetype = "text/html"
.htaccess
<FilesMatch "\.php$"> SetHandler x-httpd-php71 </FilesMatch>
.htaccess
<FilesMatch "\.php$"> SetHandler x-httpd-php56 </FilesMatch>
.htaccessに何も設定されてない場合は、デフォルトのハンドラー(この環境ではphp5.3)が利用されます。
.htaccess
何も設定しない場合は、下記suphp.confで一番に下に設定されているAddHandler でアクセスする事になります。
下記の場合php53
/etc/httpd/conf.d/suphp.conf
# To use suPHP to parse PHP-Files AddHandler x-httpd-php71 .php AddHandler x-httpd-php56 .php AddHandler x-httpd-php .php
/etc/httpd/conf.d/suphp.confで、suPHP_ConfigPathを指定してしまうと、どのバージョンのphpでも
同じphp.iniを読みに行ってしまう。
suPHP_ConfigPathをコメントアウトしておくと下記のようになります。
# for v in '' 56 71 ; do php$v --ini | grep Loaded | awk '{print $4}' ; done /etc/php.ini /opt/remi/php56/root/etc/php.ini /etc/opt/remi/php71/php.ini
ユーザディレクトリでphp.iniを利用したい場合は、利用したいディレクトリにphp.iniを起きます。
このままだと、php.iniを置いたディレクトリしか反映してくれません。
その為、.htaccesに記述する事で、配下のディスクへも反映させます。
suPHP_ConfigPath /home/hoge/public_html/ <Files ~ "\.ini"> deny from all </Files>
その時、ApacheのDirectoryに「Options」を入れておかないと、 下記のエラーとなります。
<Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options
エラー
/home/hoge/public_html/.htaccess: suPHP_ConfigPath not allowed her
ユーザディレクトリにphp.iniを置いた場合は、iniファイルが読まれる順番が、php.ini → php.dなので
デフォルトのphp.iniから変更されてる項目はマージしてくれません。
デフォルトから変更の必要なありそうな項目は、php.d内のファイルに記述してあげた方が良い。
session.save_handler = memcached date.timezone = 'Asia/Tokyo'