ほぼ間違いなく初心者の質問があります。この質問を書いている間に問題が見つかると思っていましたが、まだ行き詰まっています。
Apache の DocumentRoot を変更したいのですが、「DocumentRoot はディレクトリでなければなりません」というエラー メッセージが表示され続けます。
状況:
- コードは仮想 VMWare マシン 4.0.4 build-744019 で実行されています。
- Linux のバージョンは Scientific Linux リリース 6.4 (Carbon) です。
- Apache のバージョンは Apache/2.2.15 (Unix) です (これは特別なことは何もない yum インストールです)
httpd.conf で
DocumentRoot "/home/stave/www"
再起動すると、メッセージが表示されます
Starting httpd: Syntax error on line 292 of /etc/httpd/conf/httpd.conf:
DocumentRoot must be a directory
これまでの手順:
ディレクトリが存在することを確認しました:
ls -asl /home/stave
4 drwxrwxrwx. 2 stave stave 4096 Feb 9 09:08 www
It even has a file in it "index.html", so I am very sure that the directory exists
特権の問題である可能性があると考えたため (これはインターネットから分離された仮想開発マシンであり、トラブルシューティングを行っているため、セキュリティについてはあまり心配していません) ご覧のとおり、特権を 777 に設定しました。
権限が問題にならないように、apache が実行されているユーザーを変更しました (そして、変更が ps で機能することを確認しました)。
スタックオーバーフロー
スタックオーバーフローの回答はいくつかありますが、ほとんどは「エラーメッセージを読んでください。ディレクトリが実際には存在しないと言っています」と言っています。他の人は、最後に悪いスラッシュがあるかもしれないとほのめかしました.
その他のウェブサイト
私が見つけた最も有用なものは、アドバイスしたこれでした
SELinux 拡張機能のために、実際にはディレクトリであっても、「DocumentRoot はディレクトリでなければなりません」というエラーが発生する可能性があります。system-config-securitylevel (または redhat-config-securitylevel) を実行して httpd の SELinux を無効にするか、そのディレクトリに SELinux パーミッションを付与します: chcon -R -h -t httpd_sys_content_t /path/to/directory*
私の Linux のバージョンは Security Enhanced Linux ではないので、理解せずに試してみましたが、効果はありませんでした。
現在の状況
試すアイデアが尽きたので、診断に関する質問やアドバイスをいただければ幸いです。