ユーザ用ツール

サイト用ツール


02_freebsd:02_www:suphp

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
02_freebsd:02_www:suphp [2013/10/11 03:48] – [設定ファイルの用意] matsui02_freebsd:02_www:suphp [2013/10/17 00:13] (現在) matsui
行 1: 行 1:
 +====== suPHP ======
  
 +phpをCGIモードで動かすことができるモジュールを利用する。
 +===== 環境 =====
 +  *  FreeBSD 6.1-RELEASE-p15
 +  *  Apache/2.2.4
 +  *  PHP 5.2.1
 +  *  suPHP 0.6.2
 +
 +===== PHPをCGIモードで動かすよう再コンパイル・インストール =====
 +<code console>
 + # 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
 +</code>
 +
 +==== php.iniの編集 ====
 +<code>
 + cgi.force_redirect = 0
 +</code>
 +<color red>※PHPをCGIモードで動作させる場合、これをセットしないと「Security Alert! The PHP CGI cannot be accessed directly.」が出てしまう。 </color>
 +
 +===== suPHPインストール =====
 +
 +
 +<color red>※SuPHPの動作には[[02_freebsd:02_www:suidperl|]]が必要です。</color>
 +
 +==== ソースダウンロードここで最新版をダウンロードしてくる ====
 +
 +[[http://www.suphp.org/Home.html|suPHP Homepage]]
 +
 +==== tarボールの展開 ====
 +<code console>
 + $ tar zxvf suphp-0.6.2.tar.gz
 + $ cd suphp-0.6.2
 +</code>
 +
 +==== コンフィグ ====
 +<code console>
 + $ ./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
 +</code>
 +
 +==== suPHP_AddHandlerを使えるようにmod_suphp.cを修正 ====
 +
 +下記のように修正すると、httpd.confでsuPHP_AddHandlerが使用可能になる。
 +<code console>
 + $ 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"),
 +</code>
 +
 +==== make,make instlal ====
 +<code console>
 + $ su
 + # make ;make install
 +</code>
 +
 +==== 設定ファイルの用意 ====
 +<code console>
 + # 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
 +</code>
 +
 +
 +===== httpd.confの変更 =====
 +
 +httpd.confに下記を追加する。
 +<code>
 + LoadModule suphp_module       libexec/apache22/mod_suphp.so
 + suPHP_Engine on
 + AddHandler x-httpd-php .php 
 + suPHP_AddHandler x-httpd-php
 +</code>
 +
 +===== Apache再起動 =====
 +<code console>
 + # /usr/local/etc/rc.d/apache22.sh restart
 +</code>
 +
 +===== 確認 =====
 +
 +ログが流れているのを確認
 +<code console>
 + # tail -f /var/log/apache/suphp.log
 +</code>
 +
 +====== 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の環境変数 =====
 +
 +<color red>※suphpの場合は、環境変数を設定する場合もヴァーチャルホスト毎に行う。</color>