Category Archives: Apache

PhalconやらLaravelやらZendFrameworkやら、、PHPのフレームワークを使ってて「セッションがおかしい!」とお嘆きのあなたへ。

PHPでもフレームワーク、便利じゃないですか。

CakePHP、Symfony、Zend Framework、FuelPHP、CodeIgniter、Laravel、ほとんど使って、今はPhalconに落ち着いた私です。

で、つい最近そういうフレームワークを使っている人が、

「どうにもセッションがおかしい!ページ遷移してもindexコントローラを読んでる」

みたいなことを言う人がいて。確かにセッションの動きって怪しいな?と思う時あるし、特にフレームワークのライブラリとかを使っている場合、中をちゃんと読まないと不安ですよね。まあよく分からない場合はベタにセッションを扱えばいいんです。

でもね、上記のような事態に陥ってここに検索できた人に、少しでも助けになればとメモしておきます。フレームワーク、大体ルーターがついてるじゃないですか。document_rootのindex.phpがbootstrap的に走るじゃないですか。そうするとウェブサーバでURIをrewriteし、


    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]

みたいに書くじゃないですか。

話は変わるんですけど、ほとんどのブラウザはファビコン、「favicon.ico」を読み込みますよね? で、favicon.icoの実ファイルは置いてありますか?

ファビコンがリクエストされたらどうなりますか?

http://www.example.com/favicon.ico

にリクエストされて、Apacheが上記設定で、実ファイルがなかったら、

http://www.example.com/index.php

にアクセスがいきますよね?
つまりそういうことです。

誰かの助けになれば!

mod_pagespeed を利用して純粋に速度を高める

mod_pagespeed を利用して純粋に速度を高める: 概要: mod_pagespeed は Google が Apache HTTP サーバー用に提供しているモジュールです。このモジュールを使用すれば、Web サイトのページのロード時間を改善することができます。また、Web サイトを高速化するためのベスト・プラクティスのすべてをプログラムによって自動的にサイトに組み込むことができ、ほとんど構成を必要としません。Apache で Web サイトをホストしている場合、mod_pagespeed を使用することで、サイトの速度を迅速かつ容易に改善することができるのです。

phpとは直接関係ないですけど、読み込み速度が早くなるのはいいこと。
知らなかったので、ちょっと試してみたいです。

phpが動いているのはモジュール?cgi?

phpがモジュールモードで動いているか?cgiモードで動いているか?を知る方法 – purazumakoiの[はてな]

phpinfoを表示して

4行目あたり

CGIモード

Server API  : CGI

モジュールモード

Server API  : Apache

とか

Server API  : Apache 2.0 Handler

なるほどメモ。
いつか使うときがきそう。

basic認証を特定のディレクトリだけ解除

わすれないように. – basic認証を特定のディレクトリだけ解除する方法

公開前の仮upサイトでbasic認証を使っていて、非公開エリアでphp等によるbasic認証を使用している場合 、.htaccessの認証とphpの認証で干渉し合って永久にログイン出来な

なるほど、確かにそうなりますよね。やったことないので想像つかなかった。

特定のディレクトリ下だけ、認証を解除するには、

Satisfy Any

と、解除したいディレクトリの.htaccessに書いておけばよいらしいです。ふむふむ。

phpAwStats

SourceForge.net: phpAwStats

Apacheログファイル解析のAWStatsをphpで、というものみたいです。
これは素敵やも。ちょっと触ってみます。

Apache2、MaxClientsの設定とか。

itb-TECH 【 IT Boost – Apache2 httpd.conf – 】

MaxClientsなどの意味を復習を兼ねて。

# prefork MPM
# StartServers:Apache起動時サーバプロセス数
# MinSpareServers:スペアとして保持されているサーバプロセス数の最小数
# MaxSpareServers:スペアとして保持されているサーバプロセス数の最大数
# MaxClients:起動できるプロセスの最大数。ここで設定する数が処理できる
# 接続数の最大値になります。
# MaxRequestsPerChild:サーバプロセスが処理するリクエストの最大数。
# ここで指定した数の要求を処理すると、自動的にプロセスが消滅します。
# 0は無限に稼動しつづけます。

MaxClientsの値は、apacheの子プロセスの使用メモリなどを見て、よしなに設定してください。
ちなみにいくつかのサーバで子プロセスを見てみたら、1つ26MBぐらいでしたね。モジュールを削ればもっと軽くなりますかね。

ApacheをWorkerで動かす時、PHPに問題が?

ApacheをWorkerモードで動かすとPHPで色々問題が出てくる、という話は検索するとよく出てくる当然の話だったんですね。知らなかったです。

/etc/sysconfig/httpdのコメントにも

The default processing model (MPM) is the process-based
# ‘prefork’ model. A thread-based model, ‘worker’, is also
# available, but does not work with some modules (such as PHP).
# The service must be stopped before changing this variable.

PHPとか、Wokerでは動かないよ、とあります。
今回ApacheをWorkerで動かそうとしたのですが、大人しくpreforkで動かしておきます。

mod_rewriteでの%2F問題の解決法

【PHP TIPS】 70. mod_rewriteでの%2F問題:ITpro

Apacheの設定ファイル (httpd.conf等)でAllowEncodedSlashesディレクティブをOnにします。

AllowEncodedSlashes On

こうすることで、「/」が含まれるURLにアクセスしてもmod_rewriteの条件判定が行われ、期待されるファイルが実行されます。

スラッシュがurlencodeされた%2FがURLに含まれていると、mod_rewriteでrewriteできずに404エラーが返ってしまうという話。これは知らないとハマってしまいそうなので、記事にしてもらってよかったー