カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

XAMPPでPHPのモジュール版・CGI版切り替え

PHPにはモジュール版・CGI版の2種類があります。
主な違いは次の通りです。
モジュール版:ApacheのrootユーザーでPHPを実行・処理が速い
CGI版:ユーザー毎のPHP実行環境・セキュリティや安全性に優れている・モジュール版より遅い

XAMPPを使ってローカル環境で開発している場合、特に切り替えが必要なケースは稀かと思いますが、
参考までに切り替えの方法を記載しておきます。

httpd.conf

以下の行をコメント解除します。

#LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

httpd-xampp.conf

モジュール用セットアップの記述をコメントアウト
※PHP7の場合の例です。

#
# PHP-Module setup
#
LoadFile "/xampp/php/php7ts.dll"
LoadFile "/xampp/php/libpq.dll"
LoadFile "/xampp/php/libsqlite3.dll"
LoadModule php7_module "/xampp/php/php7apache2_4.dll"

<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
    SetHandler application/x-httpd-php-source
</FilesMatch>

CGI用セットアップの記述をコメント解除します。

#
# PHP-CGI setup
#
#<FilesMatch "\.php$">
#    SetHandler application/x-httpd-php-cgi
#</FilesMatch>
#<IfModule actions_module>
#    Action application/x-httpd-php-cgi "/php-cgi/php-cgi.exe"
#</IfModule>

PHPINFOを表示し、Server APIの欄を確認します。
こちらがApache 2.0 Handlerとなっていればモジュール版、
CGI/FastCGIになっていればCGI版で動作していることになります。

741 views

.htaccessでRewriteモジュールの設定

ApacheのRewriteモジュール(mod_rewrite.c)を使用してリダイレクト(転送)させることができます。
設定はApacheの設定ファイルに記述するか、.htaccessに記述します。

以下は例として、HTTP通信をHTTPS通信に変換しています。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{SERVER_PORT} 80
    RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
</IfModule>

基本機能について

RewriteEngine On|Off

Rewrite機能のON/OFFを切り替えます。

RewriteCond

リダイレクトする条件を定義します。

RewriteRule [正規表現パターン] [置換パターン] [オプション]

URLの書き換え、転送先を指定します。
複数のオプションを指定する場合はカンマ区切り


オプション

[L] Last(Last rule)
Rewrite機能によるURL変換を終了します
[R=301|302] レスポンスを返しクライアントをリダイレクトする
301:恒久的転送(リダイレクト)
302:一時的な転送(リダイレクト)
2,919 views

OpenSSL バージョンアップ TLS1.1以降に対応

OpenSSL0.9.8zgではSSL2、3、TLS1.0までしか対応していません。
TLS1.1、1.2に対応させるため、OpenSSL1.0.1uにバージョンアップしました。

まずはソースを公式サイトからダウンロードします。
https://www.openssl.org/source/old/1.0.1/

ソースを/usr/local/srcに保存します。
/usr/local/srcに移動して該当ファイルを解凍します。

cd /usr/local/src
tar -xvzf openssl-1.0.1u.tar.gz

解凍したディレクトリに移動し、コンパイルしてインストールします。

cd openssl-1.0.1u
./config
make
make install

デフォルトは「/usr/local/ssl」にインストールされます。

バージョンを確認してみましょう。

/usr/local/ssl/openssl version

バージョン情報が出力されますので、バージョンアップされていればOKです。

TLS1.1、1.2が使えるかどうか確認してみましょう。

/usr/local/ssl/openssl s_client -connect example.jp:443 -tls1_1 < dev/null
/usr/local/ssl/openssl s_client -connect example.jp:443 -tls1_2 < dev/null

通信可能かどうかが表示されます。
もしも使えない場合はunknown optionと言われます。
続きを読む…»

20,726 views

apache URL転送

ホームページの転送はHTMLのmetaタグでも可能ですが、包括的に転送したい場合には不向きです。
そこでapacheの設定で転送するように設定することができます。

apache設定ファイルの「httpd-vhosts.conf」を編集します。

例)http://www.example.jp/というリクエスト要求に対してhttp://www.example.com/に転送します。

<VirtualHost 192.168.0.100>
    ServerName www.example.jp
    Redirect / http://www.example.com/
</VirtualHost>

続きを読む…»

1,975 views

apache ログのカスタマイズ

apacheでは、デフォルトでアクセスログなどを記録してくれますが
そこに例えばリファラー情報などは含まれません。

apacheの設定ファイルを変更すれば、記録する情報を任意にカスタマイズすることができます。

カスタムログの作成

ここでは例として、リファラー情報とリクエストURLを記録するカスタムログを作成してみます。

httpd.confを開き、<IfModule log_config_module>というディレクティブを探します。

※IfModuleディレクティブは消しておいたほうがいいという説があるようですが、
ここではそれについては割愛します。

デフォルトでは以下のようになっているはずです。(違う場合は環境によると思ってください)

<IfModule log_config_module>
    #
    # The following directives define some format nicknames for use with
    # a CustomLog directive (see below).
    #
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    #
    # The location and format of the access logfile (Common Logfile Format).
    # If you do not define any access logfiles within a <VirtualHost>
    # container, they will be logged here.  Contrariwise, if you *do*
    # define per-<VirtualHost> access logfiles, transactions will be
    # logged therein and *not* in this file.
    #
    CustomLog logs/access_log common

    #
    # If you prefer a logfile with access, agent, and referer information
    # (Combined Logfile Format) you can use the following directive.
    #
    #CustomLog logs/access_log combined
</IfModule>

※combinedという設定が既にリファラーを記録するフォーマットになっていますので、
設定するのが面倒な場合はこちらを使用してください。
続きを読む…»

5,925 views