どうしても public_htmlのファイルがForbiddenになってしまう人へ

STATUS: 故障中x2


 /home/USENAME/ や /home/USERNAME/public_html/ のアクセス権は、711(または755)にしましたね。.htaccessに記述ミスはないですね? .htaccess自体のアクセス権にも注意ですよ。
 あと、httpd.confの設定は「UserDir public_html」にした?


 それでもダメ?


 じゃあ、とっておきのコマンドをお教えしましょう。


(rootになって)
restorecon -R /home


 どうです?見えるようになったでしょう!
 はいはいはい。お礼がしたいって?では、こちらからはてなポイントの送信を…(殴



 えー、Fedora Core3以降やCentOSでは、SELinuxが有効になっているのですが、『SELinuxは,ファイル等のリソースに「タイプ」と呼ばれるラベルを付与して管理しています。(中略)このタイプが適切に付与されないことで,トラブルになることがよくあります。』とのこと。
 上記のコマンドでは、/home以下のタイプラベルを初期化しています。



2.2. ユーザのホームページが公開できない(Apache)
 ホームディレクトリにpublic_htmlを新規作成しても,
適切なタイプラベルが割り当てられないため,
Apache(httpd_tドメイン)がpublic_htmlにアクセスできず,
Forbiddenのエラーが出ます。

対処方法ですが,
public_htmlディレクトリを作成した後,
rootになって,
#restorecon -R /home (これは,/home以下のタイプラベルを初期化します)
とします。

通常のLinux側の設定もお忘れなく。
chmod 711 /home/
が必要でした。
httpd.confの

部分と

のコメントを外す必要もあります。

(Fedora Core3 SELinuxメモ)



 というわけで、CentOSでユーザーディレクトリのページが表示されないので超ハマってました。SELinuxってどこか遠い国で使われているものかと思っていたよ〜。つーかデストリの一種かと思ってた(ぉ
 このページのおかげで、解決しました。感謝感謝です。


/


 次期自宅サーバは、やっぱり CentOS にしようかと思います。
 もと自宅サーバだったTurboLinuxServer7のHDDイメージもVirtualPC上で動作するようにはなったのですが、PHP5使いたくなってそのついでに環境を構築中。
 PHP5だとSQLiteが使えますからね。
 いま作りたいと思っているプログラムでDBが必要なのでするが、DBMSが他に必要となると運用が面倒なので。


 で、CentOS4.4のままだとPHP4なので、いろいろやって(このあたりを参考に)yumでPHP5をインストールしたら、肝心のSQLiteは入ってなかった(T_T)
 yum remove php5 してやる。


 しかたないので、php.netから最新ソース落としてmake;make installしました。
 configureはこんな感じ。→これ
 SQLiteやSDのサンプルプログラムを動かしたら正常に動いたのでOKかな。
 ただ、CLI版を実行すると


PHP Warning: PHP Startup: gd: Unable to initialize module
Module compiled with module API=20050922, debug=0, thread-safety=0
PHP compiled with module API=20060613, debug=0, thread-safety=0
These options need to match
in Unknown on line 0
ってWarningが大量に発生します。モジュールの日付の整合性がとれてないのかなあ。とりあえず動いているようではあるけど。