- ベストアンサー
CentOS5のWebサーバーについて
現在、自宅でCentOS5によるサーバー構築を練習中なのですが、 FTPサーバーを構築後にWebサーバーの設定を変更したところ急にアップロードができなくなり、 Could not create file という表示がだされます。 原因として考えられることとして、Webサーバーを構築中に、初期設定である DocumentRoot "/var/www/html" を変換して、 DocumentRoot "/home/www" に変換したことが考えられのですが、何故なのでしょうか? どなたか教えてはいただけないでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
/home/www のパーミッションはWebサーバーが書き込めるようになってますか?
その他の回答 (2)
- GandamOO
- ベストアンサー率37% (59/158)
まずは、こういう状況に陥ったらログを見るようにしましょう。 はじめにWebサーバのログ Apacheなら/var/log/httpd/access_logと/var/log/httpd/error_logです。 パーミッションの問題かどうかなど確認します。 パーミッションは、ls -lコマンドを実行したときに表示される drw-r--r-- 1 apache apache ・・・ のような感じの-rw-r--r--の部分です。 最初はファイルの種類でディレクトリならdになります。 それ以降はオーナーのrwx、グループのrwx、その他のrwxの権限です。 rwxのrはリード権、wは書込み権、xは実行権です。 apache apacheとなっている部分は、ファイルのオーナーとグループです。上記の例では、apacheユーザのapacheグループになります。 パーミッションの問題でなかった場合、SELinuxの可能性もあります。 /var/log/messagesを確認してみましょう。SELinuxのログが出ているかもしれません。 SELinuxを無効にするか、コンテキストの属性を付与するか、ポリシー変更するかなどいくつか対処の仕方があると思います。 簡単なのがSELinuxを無効にすることで、setenforce 0です。 これで解決するようならSELinuxが原因です。 セキュリティのことにあまりこだわらなければ、/etc/selinux/configをエディタで開いてSELINUX=enforcingとなっているところがあると思うので、SELINUX=permissiveにすると起動時にSELinuxが動いていますがログに出力されるだけになり、実質無効状態です。 SELinuxを有効のまま何とかしたいなら、コンテキストを変えるか、ポリシー変更になります。 アップロードする場所(パス)はどこだかわかりませんが、成功できていたところのコンテキストを確認して、新しいところのコンテキストと違っていたら変更してみるという手もあります。 ls -Zで確認できます。 コンテキストの変更は、たとえば、 chcon system_u:object_r:httpd_sys_content_t ファイル名/ディレクトリ名 といった感じです。 ただ、DocumentoRootを変更したためにアップロードするプログラムが相対パス指定だとしたら、アップロードする場所が変わるので、そのためにおきている現象のような気もしますが、その辺はちゃんと確認されているでしょうか。
お礼
no.1の回答で解決することができました。 ですが、あなた様の意見も今後の参考にさせていただきます。 長文を書いていだただき、誠にありがとうございます。
- ken-etsu
- ベストアンサー率46% (55/119)
ANo.1に加えて、SELinuxで拒否されてる可能性もあります。 その場合、restoreconを使うか、SELinuxをデーモン単位に無効化するか、SELinux自体を無効化します。
お礼
no.1の回答で解決することができました。 ですが、あなた様の意見も今後の参考にさせていただきます。 誠にありがとうございました
お礼
書き込み権限を付加したら、アップロードできるようになりました。 教えていただいてありがとうございました!