PHP + fcgi + suEXEC + php.ini 設定メモ
前回PHP + fcgi + suEXEC 設定メモを投稿しましたが
今回はさらにphp.iniを個別に適用する方法について記載します。
- php-cgi.shを利用する場合
- 前回作成したシェルスクリプトを書き換えます。
適用する設定毎にファイルが必要になります。
- 指定したphp.iniファイルを利用する
- #!/bin/sh
exec /usr/bin/php-cgi -c /home/username/public_html/php.ini
- #!/bin/sh
- デフォルトのphp.iniから特定のディレクティブのみ変更する
- #!/bin/sh
exec /usr/bin/php-cgi -d display_errors=0 -d extension=http.so
- #!/bin/sh
- 前回作成したシェルスクリプトを書き換えます。
- php-cgiを利用する場合
- シェルスクリプトを利用せずphp-cgiのコピーを利用します。
Apacheの設定(httpd.conf)を変更するだけなので便利です。 - 準備
- VPSへSSHで接続
- $ su
- # cp /usr/bin/php-cgi /var/www/username/php-cgi
- # chown username:username /var/www/username/php-cgi
- # chmod 700 /var/www/username/php-cgi
- 指定したphp.iniファイルを利用する
- FCGIWrapper “/home/kubota/php-cgi -c /home/username/public_html/php.ini” .php
- デフォルトのphp.iniから特定のディレクティブのみ変更する
- FCGIWrapper “/home/kubota/php-cgi -d display_errors=0 -d extension=http.so” .php
- シェルスクリプトを利用せずphp-cgiのコピーを利用します。
私はphp-cgiをコピーして利用するよう設定しました。
お好みで使い分けてみてくださいね。
そういえば、このブログのバナーを作りました&貰いました。
サイドバーに貼ってありますので、暇な方は是非ご覧くださいw
追伸 : このブログはYahoo!に見放されている模様><;
「個人的自由帳」の検索結果 – Yahoo!検索
個人的自由帳 – Google 検索
でも、まだ希望はある…はずw
PHP + fcgi + suEXEC 設定メモ
SaaSesのVPS上で設定した際の覚え書きです。
OSはCentOS 64bit版です。
- Virtualminの設定
- mod_fcgidが初期状態から入っているのかは確認していませんが
自力でmod_fcgidがインストールできる場合はVirtualminは不要かも?
- Virtualminをインストール
- Virtualminを日本語化
- 言語ファイルをUTF-8へ変換+リネーム
- config.info.ja_JP.euc → config.info.ja_JP.UTF-8
- ja_JP.euc → ja_JP.UTF-8
- Virtualmin上へ言語ファイルを追加
- module.infoは上書きする必要無し
- 言語ファイルをUTF-8へ変換+リネーム
- ブラウザでVIrtualminを表示
- システム設定→設定情報の再確認
- 以下のように表示されれば完了です。
このシステムでVirtualminを動かすための準備が済みました。
- 以下のように表示されれば完了です。
- mod_fcgidが初期状態から入っているのかは確認していませんが
- fcgiの設定
- VPSへSSHで接続
- $ su
- # /usr/sbin/suexec -V
- 以下の赤字部分をメモします。
-D AP_DOC_ROOT=”/var/www“
- 以下の赤字部分をメモします。
- # mkdir /var/www/username
- # vi /var/www/username/php-cgi.sh
- php-cgi.shの内容は以下の通りです。
#!/bin/sh
exec /usr/bin/php-cgi
- php-cgi.shの内容は以下の通りです。
- # chown username:username /var/www/username
- # chown username:username /var/www/username/php-cgi.sh
- # chmod 700 /var/www/username/php-cgi.sh
- # vim /etc/httpd/conf/httpd.conf
- 以下のような設定を追加します。
SuexecUserGroup username username
AddHandler fcgid-script .php
FCGIWrapper /var/www/username/php-cgi.sh .php
Options +ExecCGI
- 以下のような設定を追加します。
こんな感じで。
ユーザ毎にphp-cgi.shを作成する点がポイントですお(^ω^ )
どこか間違ってたら誰か教えてください><;
PHPのヒアドキュメント内で関数(htmlspecialchars等)を利用する方法
もう7月です。
今年も半分が終わってしまいました(^ω^;)
たまにはプログラミングっぽい話題を。
PHPで開発をやっていて「これは便利!」と思い、
現在も愛用している方法を紹介してみます。
(改めてググってみてもすぐには見つからなかったので(^ω^;))
PHPで開発を行っている際に
echoで複数行を出力したくなる場合があるかと思います。
(複数行を変数へ代入したい場合も含みます。)
そういった場合、私はヒアドキュメントを用います。
また、以下のようにヒアドキュメント内で
変数を展開できる機能は非常に有用です。
PHPソース:
<?php
$tempstr = ‘2行目’;
echo <<< EOT
1行目<br />
{$tempstr}<br />
3行目
EOT;
?>
出力:
1行目
2行目
3行目
ただし、関数は展開されないため、
htmlspecialchars等を利用したい場合に困ります。
PHPソース:
<?php
$tempstr = ‘<a href=”http://www.google.com/”>2行目</a>’;
echo <<< EOT
1行目<br />
{htmlspecialchars($tempstr)}<br />
3行目
EOT;
?>
出力:
1行目
{htmlspecialchars(2行目)}
3行目
これでは、$_GETや$_POSTで受け取ったデータを出力する際に困ってしまいます。
安全に出力するためには以下のように記述します。
PHPソース:
<?php
$tempstr = ‘<a href=”http://www.google.com/”>2行目</a>’;
$tempstr = htmlspecialchars($tempstr);
echo <<< EOT
1行目<br />
{$tempstr}<br />
3行目
EOT;
?>
出力:
1行目
<a href=”http://www.google.com/”>2行目</a>
3行目
こうする事で安全に出力できはしますが
正直な所、出力したい変数が多い場合は面倒ですよね。
もっとスマートに記述したい所です。
そこで、htmlspecialcharsをクラス化し変数に代入してみます。
実際には以下のようなコードをPHPソースに追加します。
PHPソース:
<?php
class HSC_Class {
public function enc($output){
return htmlspecialchars($output);
}
}
$hsc = new HSC_Class();
?>
すると、以下のような形で記述できるようになります。
PHPソース:
<?php
$tempstr = ‘<a href=”http://www.google.com/”>2行目</a>’;
echo <<< EOT
1行目<br />
{$hsc->enc($tempstr)}<br />
3行目
EOT;
?>
出力:
1行目
<a href=”http://www.google.com/”>2行目</a>
3行目
いかがでしょうか。
事前にhtmlspecialcharsを通す必要がなくなった分、
PHPソースが分かりやすく簡素になったと思いませんか。
「$hsc->enc()」とする事により、
クラス「HSC_Class」内の関数「enc」を呼び出している事になります。
このように、
1. 必要な関数をクラス化
2. 作成したクラスを変数へ代入
3. ヒアドキュメント内で変数から関数を呼び出し
とすることにより、ヒアドキュメント内で関数が利用できます。
よろしければお試しくださいね。
そうそう、PHPの開発にはEclipseがお勧めです。
(メモリに余裕があればAll in Oneパッケージが便利です。)
初期設定が多少面倒ですが、それさえ乗り越えればかなり快適です(^ω^ )
(ちなみに、上記のPHPコード部分の配色はEclipseの物を再現してみました。)
Recent Comments