ユーザ用ツール

サイト用ツール


サイドバー

このページの翻訳:



最近の更新



Tag Cloud

02_freebsd:02_www:suphp

suPHP

phpをCGIモードで動かすことができるモジュールを利用する。

環境

  • FreeBSD 6.1-RELEASE-p15
  • Apache/2.2.4
  • PHP 5.2.1
  • suPHP 0.6.2

PHPをCGIモードで動かすよう再コンパイル・インストール

 # tar zxvf php-5.2.1.tar.gz
 # cd php-5.2.1
 # ./configure \
 --with-mysql=/usr/local \
 --with-pgsql=/usr/local/pgsql \
 --enable-cgi \
 --disable-cli \
 --enable-pear \
 --with-snmp \
 --enable-sockets \
 --enable-force-cgi-redirect \
 --with-tsrm-pth \
 --with-gd \
 --with-zlib \
 --with-jpeg-dir=/usr/local \
 --with-png-dir=/usr/local \
 --with-freetype-dir=/usr/local \
 --enable-mbstring \
 --enable-mbstr-enc-trans \
 --enable-trans-sid \
 --enable-versioning \
 --enable-gd-native-ttf \
 --enable-gd-jis-conv
 #make ;make install

php.iniの編集

 cgi.force_redirect = 0

※PHPをCGIモードで動作させる場合、これをセットしないと「Security Alert! The PHP CGI cannot be accessed directly.」が出てしまう。

suPHPインストール

※SuPHPの動作にはsuidperlが必要です。

ソースダウンロードここで最新版をダウンロードしてくる

tarボールの展開

 $ tar zxvf suphp-0.6.2.tar.gz
 $ cd suphp-0.6.2

コンフィグ

 $ ./configure --with-min-uid=100 --with-min-gid=100 \
 --with-apache-user=www --with-php=/usr/local/bin/php \
 --with-logfile=/var/log/apache/suphp.log --with-apxs=/usr/local/sbin/apxs \
 --sysconfdir=/usr/local/etc --disable-checkpath \
 --with-apr=/usr/local/bin/apr-1-config --with-setid-mode=owner

suPHP_AddHandlerを使えるようにmod_suphp.cを修正

下記のように修正すると、httpd.confでsuPHP_AddHandlerが使用可能になる。

 $ vi ./src/apache2/mod_suphp.c
 324     AP_INIT_ITERATE("suPHP_AddHandler", suphp_handle_cmd_add_handler, NULL, ACCESS_C       ONF, "Tells mod_suphp to handle these MIME-types"),
                     ↓↓
 324     AP_INIT_ITERATE("suPHP_AddHandler", suphp_handle_cmd_add_handler, NULL, RSRC_CONF | ACCESS_C        ONF, "Tells mod_suphp to handle these MIME-types"),

make,make instlal

 $ su
 # make ;make install

設定ファイルの用意

 # cat /usr/local/etc/suphp.conf
 [global]
 ;Path to logfile
 logfile=/var/log/apache/suphp.log
 
 ;Loglevel
 loglevel=info
 
 ;User Apache is running as
 webserver_user=www
 
 ;Path all scripts have to be in
 docroot=/
 
 ;Path to chroot() to before executing script
 ;chroot=/mychroot
 
 ; Security options
 allow_file_group_writeable=false
 allow_file_others_writeable=false
 allow_directory_group_writeable=false
 allow_directory_others_writeable=false
 
 ;Check wheter script is within DOCUMENT_ROOT
 check_vhost_docroot=false
 
 ;Send minor error messages to browser
 errors_to_browser=true
 
 ;PATH environment variable
 env_path=/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
 
 ;Umask to set, specify in octal notation
 umask=0022
 
 ; Minimum UID
 min_uid=100
 
 ; Minimum GID
 min_gid=100
 
 
 [handlers]
 ;Handler for php-scripts
 x-httpd-php=php:/usr/local/bin/php
 
 ;Handler for CGI-scripts
 x-suphp-cgi=execute:!self

httpd.confの変更

httpd.confに下記を追加する。

 LoadModule suphp_module       libexec/apache22/mod_suphp.so
 suPHP_Engine on
 AddHandler x-httpd-php .php 
 suPHP_AddHandler x-httpd-php

Apache再起動

 # /usr/local/etc/rc.d/apache22.sh restart

確認

ログが流れているのを確認

 # tail -f /var/log/apache/suphp.log

PHPをcgiで動かす場合

php.iniを作業ディレクトリに置く事で、そのディレクトリのphpに対して設定を反映させる事ができます。

/home/hogehoge/public_html/test.phpを自分で設定したphp.iniを使いたい。

/home/hogehoge/public_html/php.iniを作成し、自分用の設定を書き込む。

-.htaccessでphp_flag/php_valueは使えない

suPHPの環境変数

※suphpの場合は、環境変数を設定する場合もヴァーチャルホスト毎に行う。

02_freebsd/02_www/suphp.txt · 最終更新: 2013/10/17 09:13 by matsui