• ベストアンサー

apacheでmod_userdir.c

apacheを使っています。設定ファイルhttpd.confには LoadModule userdir_module modules/mod_userdir.so という記述があるにも関わらず、 $ httpd -lコマンドを実行しても、 mod_userdir.c が表示されていません。 これでは、httpd.conf中に、 UserDir /home/*/public_html を記述しても、public_htmlにアクセスされても Pages not found となってしまいます。 mod_userdir.cを組み込む方法をご教授ください。

  • MKSA
  • お礼率19% (15/76)

質問者が選んだベストアンサー

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.4

> 今度は、 > Forbidden > You don't have permission to access ~ > というエラーが出てしまいました。 > > 対象のディレクトリやファイルは > chmod 755 > としているのでアクセス権はあるはずなのですが・・・。 うむすばらしい。一歩前に進んだじゃないか。さて、クライアント側にこいつ(403)が返る時、原因は2つある。 1.apacheがファイルシステムにアクセスできない。  質問者が言っているchmod 755のことで、確実に755になっているのであれば問題ない。が、ひょっとしたら/home/mksa/public_htmlは755だけど、/home/mksaが700になっていて、そっちで弾かれているという可能性もある。この辺も、ネット上に「/home/mksa/public_htmlが755ならその親がどうであろうと関係ない」という情報も流れているが、私個人は親が700だったらダメなんじゃないかなぁと思う。  ちなみにapacheは普通ユーザーnobodyさん辺りが所有するプロセスになるため、ユーザーmksaが所有するファイルから見ればothersになる。  ところで、今/home/mksa/public_htmlも/home/mksaも755じゃないといけないと言ったけど、そうすると一般ユーザーがお互いのhomeを見れる事になるので、実際にシステムを構築する際には/var/www/users/*/public_htmlなどとhome以外を使うというのも手だ。 2.apacheの設定でクライアント(Webブラウザ)にアクセスさせない。  これはhttpd.confで<Directory>ディレクティブや<Location>ディレクティブの設定によりアクセス制御を行うもので、例えば ~~~~~~~~start <Directory /> order deny,allow deny from All </Directory> UserDir /home/*/public_html ~~~~~~~~end となっていると、ファイルシステム全体が全て拒否されている状態で/home/mksa/public_htmlもその庇護下に置かれる。 ~~~~~~~~start <Directory /> order deny,allow deny from All </Directory> UserDir /home/*/public_html <Directory "/home/*/public_html"> order deny,allow deny from All allow from All </Directory> ~~~~~~~~end として、ユーザーごとのディレクトリー以下は基本全て許可するという風に設定してみると良い。ただ、大抵のディストリビューションの標準のhttpd.confはこの辺りは最初から設定されていると思うんだけどね。 これでも403になるようなら、apacheが吐き出すアクセスログを調べてみると良いだろう。

その他の回答 (3)

  • cynthia4
  • ベストアンサー率51% (186/358)
回答No.3

user 名 が mksa ならば # chmod o+x /home/mksa とすれば良いはずですが。

  • cynthia4
  • ベストアンサー率51% (186/358)
回答No.2

# httpd -l Compiled in modules: core.c prefork.c http_core.c mod_so.c # httpd -M --------------------- --------------------- speling_module (shared) userdir_module (shared) alias_module (shared) rewrite_module (shared) ------------------------ $ man httpd -l Output a list of modules compiled into the server. This will not list dynamically loaded modules included using the LoadModule directive. public_html の 下に、index.html が有れば 特に問題はないと思うし、問題は無かった。

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

$ httpd -l というコマンドは、Apache 1.3.4~、Apache 2.0.x、Apache 2.2.xの場合、「httpdという実行ファイルの中に直接埋め込まれている*.cを表示する」ものだ。なので、LoadModuleで動的にロードするモジュールの*.cは表示されない。変わりに $ httpd -M とすると、ロードされるモジュールが全て表示される。この時、右にstaticと書かれているものが、先ほどのhttpd -lで表示されたものと一致しているはずだ。LoadModuleで動的にロードされるモジュールはsharedと書かれているだろう。このsharedの中にuserdir_moduleがあれば、mod_userdirは正しく動的に組み込まれている事になる。 UserDir /home/*/public_html というディレクティブが設定されている場合、そのOS中にmksaというユーザーが居たとして、OS自身から http://127.0.0.1/~mksa/public_html ・・・(1) にアクセスしてるなんて事はないよね? http://127.0.0.1/~mksa/index.html にアクセスすると/home/mksa/public_html/index.htmlを返すので、(1)だと/home/mksa/public_html/public_htmlを探しにいってNot Foundになる。ブラウザでURLを正しく打ってるのにダメとなるとhttpd.confがおかしい事になるのでもう一度確認されたし。

MKSA
質問者

補足

ご回答ありがとうございます。今度は、 Forbidden You don't have permission to access ~ というエラーが出てしまいました。 対象のディレクトリやファイルは chmod 755 としているのでアクセス権はあるはずなのですが・・・。

関連するQ&A

  • apache tomcatの連携でのエラーメッセージ

    こんにちは、いつもお世話になっております。 「tomcat apache の連携ができていないのでしょうか」 という質問(受付中)をしているものです。 tomcat apache の連携で試行錯誤していたら 新たに疑問が出てきたので質問させていただきます。 APACHE_HOME/modulesにmod_jk2.soを配置し APACHE_HOME/conf\httpd.confの最後の行に 「LoadModule jk2_module modules/mod_jk2.so」 と記述する。 そしてapacheを起動すると以下のようなエラーが出ます。 「Syntax error on line "LoadModuleを記述した行番号" of APACHE_HOME/conf/httpd.conf: Cannot load APACHE_HOME/modules/mod_jk2.so into server: ....」 原因は何なのでしょうか、どなたか教えていただけないでしょうか よろしくお願いします。

  • Apache1.33 PHP4.3.9 でApacheが起動できない

    ■環境 Microsoft Virtual PC 上でFreeBSD動作(WindowsXP Serviec Pack 2) FreeBSD4.10 Apache1.3.3 PHP4.3.9 PostgreSQL8.2.4 ○Apache1.3.3のインストール ./configure --enable-shared=max --enable-module=most make make install ○PHP4.3.9のインストール ./configure --without-mysql --with-apxs=/usr/local/apache/sbin/apxs --enable-mbstring --with-pgsql make make install cp php.ini-dist /usr/local/lib/php.ini ○/usr/local/apache/etc/httpd.conf の内容 ----------------------------------------------------------- # Example: # LoadModule foo_module libexec/mod_foo.so LoadModule env_module libexec/mod_env.so LoadModule config_log_module libexec/mod_log_config.so LoadModule mime_magic_module libexec/mod_mime_magic.so LoadModule mime_module libexec/mod_mime.so LoadModule nagotiation_module libexec/mod_nagotiation.so LoadModule status_module libexec/mod_status.so LoadModule info_module libexec/mod_info.so LoadModule includes_module libexec/mod_include.so LoadModule autoindex_module libexec/mod_autoindex.so LoadModule dir_module libexec/mod_dir.so LoadModule cgi_module libexec/mod_cgi.so LoadModule asis_module libexec/mod_asis.so LoadModule imap_module libexec/mod_imap.so LoadModule action_module libexec/mod_actions.so LoadModule speling_module libexec/mod_speling.so LoadModule userdir_module libexec/mod_userdir.so LoadModule proxy_module libexec/mod_libproxy.so LoadModule alias_module libexec/mod_alias.so LoadModule rewrite_module libexec/mod_rewrite.so LoadModule access_module libexec/mod_access.so LoadModule auth_module libexec/mod_auth.so LoadModule anon_auth_module libexec/mod_auth_anon.so LoadModule dbm_auth_module libexec/mod_auth_dbm.so LoadModule digest_module libexec/mod_digest.so LoadModule cern_meta_module libexec/mod_cern_meta.so LoadModule expires_module libexec/mod_expires.so LoadModule headers_module libexec/mod_headers.so LoadModule usertrack_module libexec/mod_usertrack.so LoadModule unique_id_module libexec/mod_unique_id.so LoadModule setenvif_module libexec/mod_setenvif.so LoadModule php4_module libexec/libphp4.so # Reconstruction of the complete module list from all available modules # (static and shared ones) to achieve correct module execution order. # [WHENEVER YOU CHANGE THE LOADMODULE SECTION ABOVE UPDATE THIS, TOO] ClearModuleList AddModule mod_env.c AddModule mod_log_config.c AddModule mod_mime_magic.c AddModule mod_mime.c AddModule mod_nagotiation.c AddModule mod_status.c AddModule mod_info.c AddModule mod_include.c AddModule mod_autoindex.c AddModule mod_dir.c AddModule mod_cgi.c AddModule mod_asis.c AddModule mod_imap.c AddModule mod_actions.c AddModule mod_speling.c AddModule mod_userdir.c AddModule mod_proxy.c AddModule mod_alias.c AddModule mod_rewrite.c AddModule mod_access.c AddModule mod_auth.c AddModule mod_auth_anon.c AddModule mod_auth_dbm.c AddModule mod_digest.c AddModule mod_cern_meta.c AddModule mod_expires.c AddModule mod_headers.c AddModule mod_usertrack.c AddModule mod_unique_id.c AddModule mod_so.c AddModule mod_setenvif.c AddModule mod_php4.c AddType application/x-httpd-php .php .phtml AddType application/x-httpd-php-source .phps ------------------------------------------------ 以下のコマンドでapacheを起動しようとすると /usr/local/apache/sbin/apachectl start 下記のエラーが発生してしまいます。どうか解決策を教えてください。 /usr/local/apache/sbin/apachectl start Syntax error on line 26 of /usr/local/apache/etc/httpd.conf Cannot load /usr/local/apache/libexec/mode_env.so into server : /usr/local/apache/ libexec/mod_env.so: Undefined symbol "ap_palloc" /usr/local/apache/sbin/apachectl start: httpd could not be started

  • Apache2.2.4のmod_authnz_ldap

    centosにapacheの2.2.4をソースから次のconfigureオプションでインストールしたのですが、/usr/local/apache2/modules/にmod_authnz_ldap.cが追加されません。/usr/local/apache2/bin/httpd -lで確認するとmod_authnz_ldap.cとutil_ldap.cを確認する事ができるのですが。。。 ■configureオプション ./configure --enable-so --enable-authnz-ldap --with-ldap --enable-ldap /usr/local/apache2/modules/に追加されていない為、httpd.confに LoadModule authz_ldap_module modules/mod_authz_ldap.soを追記し apacheを再起動してもエラーがでてしまいます。   configureオプションに問題があるのでしょうか?

  • Apacheモジュールの追加方法

    ./configure --enable-module=so --enable-shared=max --activate-module= src/modules/php4/libphp4.a で、ApacheをLinuxへインストールしたのですが、mod_userdir.soがないというエラーになります。 モジュールを追加するにはどうすれば良いでしょうか? /etc/rc.d/init.d/httpd start Starting httpd: Syntax error on line 217 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/libexec/mod_userdir.so into server: /usr/local/apache/libexec/mod_user dir.so: undefined symbol: ap_os_is_path_absolute 又、Apacheはmodule=maxだとWWWサーバが 重くなるでしょうか?

  • apache2.0.64に後からmod_sslを入れているのですが…

    apache2.0.64に後からmod_sslを入れているのですが… apache2.0.64に後からmod_sslを入れているのですが、うまくいかず困っています。 apache2.0.64を導入後にSSLが必要になったので下記サイトを参考にしてあとからmod_sslを入れようと試みています。 http://d.hatena.ne.jp/hiro_nemu/20090516/1242436684 apacheはすでに起動してのですが、導入後はapachectlでstopできなくなりました。 原因はLoadModule ssl_moduleがloadできないようでコメントアウトすると今までどおりapacheを起動できます。 起動時のエラーは以下の通りです。 Syntax error on line 268 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/mod_ssl.so into server: /usr/local/apache/modules/mod_ssl.so: undefined symbol: ssl_cmd_SSLMutex ここからどうしていいかわからない状態です。 何でもかまわないのでご教授ください。

  • Tomcat4.0とApache1.3の連携で?

    WindowsXPの環境でTomcat4.0とApache1.3を導入し、 Web開発を行っているのですが、両方を起動しても うまく動作しません。 通常 http://localhost:8080/ で表示できるものが    http://localhost/    でも表示できる とのことですが、無理でした。 連携のためのコネクタは mod_webapp.so を使っています。 また配置も C:\Program Files\Apache Group\Apache\modules の下に 設定しています。 Apacheのhttpd.confには  LoadModule webapp_module modules/mod_webapp.so  AddModule mod_webapp.so  WebAppConnection conn warp localhost:8080  WebAppDeploy examples conn /examples とちゃんと記述しています。 起動時のメッセージは --------------- [Fri Mar 21 23:55:43 2003] [warn] module mod_webapp.c is already added, skipping Apache/1.3.26 (Win32) running... --------------- と表示されます・・・・ なぜでしょうか? 教えてくださいm(__)m

  • apache環境におけるmod_perlのインストール

    apacheをwindows98 SEにいれて、perlを動かそうとしているのですが、うまく行きません。 成功しているかたがいらっしゃったら、方法を教えてください。 僕が試した詳細は以下の通りです。 1)ファイルをダウンロードし、dllをModuleの下にコピーをし、 C:\Program Files\Apache Group\Apache\modules\ApacheModulePerl.dll 2)httpd.confを LoadModule perl_module modules/ApacheModulePerl.dll を追加しました。 3)その後、apache コマンドを打つと、 Syntax error on line 184 of c:program files/apache group/apache/conf/httpd.conf: Cannot load c:/progrm files/aapche group/apache/modules/ApacheModulePerl.dll nto server: の様なエラーメッセージが表示されてしまい、起動しません。 #おそらくapacheを再コンパイルする必要があると思うのですが、方法がわかりません。自分でも調べている最中ですが、やられた方がいらっしゃったら教えてください。 以上、御願いします。

  • Apache2.2とTomcat6.0の連携方法

    Apache2.2とTomcat6.0の連携がうまくいかず、困っています。 宜しくお願い致します。 ■問題点 ApacheとTomcatの連携の設定を行い、http://localhost/examplesを 表示させようとしましたが、[ページが見つかりません]と表示され、 ApacheとTomcatの連携が出来ません。 以下に設定した内容を記載致しました。 設定内容に不備があればご教授お願い致します。 ■Apacheの設定は以下の様にしています。 C:\Program Files\Apache Software Foundation\Apache2.2\conf 内の httpd.confを編集 (1)コメント行の有効化 #LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so 先頭の「#」を外し、有効化する。 ↓ LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so (2)文末に以下を追加する。 (Apacheへの要求を Tomcatにて処理が行われる様にする。) <Location /examples/> ProxyPass ajp://localhost:8009/examples/ </Location> <Location /examples/> ProxyPass ajp://localhost:8009/jspbook/ </Location> ■備考 1.Apache2.2インストール後、Apache2.2サーバを起動させ、 http://localhost/ が表示される事は確認出来ています。 2.Tomcat6.0インストール後、Tomcatを起動させ、 http://localhost:8080/ が表示される事は確認出来ています。 3.Apacheのバージョン:Apache2.2.6  Tomcatのバージョン:Tomcat6.0.14 宜しくお願い致します。

  • mod_rewriteが効かない!

    サーバの運用上、mod_rewriteを使う必要が出来たので設定してみたのですが効きません。 FreeBSD4.11+Apache1.3.33で httpd.confファイルに直接書き込んで試しています。 LoadModule rewrite_module modules/mod_rewrite.so AddModule mod_rewrite.c のどちらも書いてあるにもかかわらず、下記のテスト設定を試してみたらローカルIPからアクセス出来てしまいます。 RewriteEngine on RewriteCond %{REMOTE_ADDR} ^192\.168\.1\. ←ローカルネットワークのアドレス RewriteRule ^.*$ - [F] どのようにしたらいいですか? アドバイスお願い致します。

  • PHP5をセットアップしたらApache1が起動できなくなった

    Windows98+PHP5.1.2+Apache1.3.34の組み合わせで、 ↓に書いてあるとおり(何度も確認しました)に DLLのコピーやphp.ini、httpd.confの修正をしましたが、 http://allabout.co.jp/internet/database/closeup/CU20040928A/index.htm (ほぼ同じ内容のApache2向け↓の記事も参考にしました  http://allabout.co.jp/internet/database/closeup/CU20050320A/index.htm) C:\Program Files\Apache Group\Apache\Apache.exe を実行すると、DOS窓に下記のエラーが出て サーバーをスタートできません。何が足りないのでしょうか… ----ここから Syntax error on line 193 of c:/program files/apache group/apache/conf/httpd.conf : Cannot load c:/php/php5apache.dll into server: (1157) このアプリケーションの実行 に必要なライブラリ ファイルのうちの 1 つが見つかりません。: Note the errors or messages above, and press the <ESC> key to exit. 14... ----ここまで 確かに、httpd.confの193行目は、 ---ここから #LoadModule usertrack_module modules/mod_usertrack.so #LoadModule unique_id_module modules/mod_unique_id.so LoadModule php5_module c:/php/php5apache.dll  # ■■ここです■■ # # Reconstruction of the complete module list from all available modules ---ここまで ↑のように設定してありますが、 c:/php/php5apache.dllは確かに存在しているのですが…

    • ベストアンサー
    • PHP