お世話になります。
以前は使えていたと思うのですが、ユーザーディレクトリでのCGIが実行できません。
ルートのCGIは普通に使えています。(普段はこちらしか使わないので)エラー内容は、
[alert] [client xxx.xx.xx.xxx] /home/xxx/public_html
/.htaccess: Invalid command 'LayoutIgnoreURI', perhaps mis-spelled or defined by
a module not included in the server configuration
とエラーログで表示されています。
httpd.confをいじった記憶もないのですが。。。
よろしくお願いします
> 以前は使えていたと思うのですが、ユーザーディレクトリでのCGIが実行できません。
> ルートのCGIは普通に使えています。(普段はこちらしか使わないので)エラー内容は、
> [alert] [client xxx.xx.xx.xxx] /home/xxx/public_html
> /.htaccess: Invalid command 'LayoutIgnoreURI', perhaps mis-spelled or defined by
> a module not included in the server configuration
> とエラーログで表示されています。
> httpd.confをいじった記憶もないのですが。。。
こういう前後関係の記憶なんて、いいかげんなものですから無視して目の前にある事実だけ押さえればいいのではないでしょうか。
英語は苦手ですか? .htaccessで「LayoutIgnoreURI」は無効のコマンドで、ミススペルかサーバ設定でmoduleが定義されていない、と言ってますので、前者はないので、mod_layoutがLoadされていないか、UserDirで有効になっていないからでしょう。mod_layoutそのもののことは、おやじはわかりません。
> こういう前後関係の記憶なんて、いいかげんなものですから無視して目の前にある事実だけ押さえればいいのではないでしょうか。
まぁ、確かにそうですね。。
> 英語は苦手ですか? .htaccessで「LayoutIgnoreURI」は無効のコマンドで、ミススペルかサーバ設定でmoduleが定義されていない、と言ってますので、前者はないので、mod_layoutがLoadされていないか、UserDirで有効になっていないからでしょう。mod_layoutそのもののことは、おやじはわかりません。
英語苦手ではありますが、mod_layoutの定義かLOADしていないというのはわかっていたのですが、mod_layout
なんぞ使うつもりも無かったというより、どういう代物かわかりませんでした。
今回、何とかCGI実行できたのは、Fedora core1のApache2のRPMはsueexecが有効です。こちらを無効化して
ユーザーディレクトリのAllowOverrideをnoneしました。これによって.htaccessが無効になり、CGI実行が
出来ました。ただ、.htaccessは使用したいので、AllowOverrideにnone以外のAllやAuthConfigを設定すると
CGIが実行できませんでした。
これを解決するには、良い知恵があったら教えてください。最悪一度再インストールも考えていますが、
サービス中のサーバーを再インストールしたくないし。。。(やって結果が同じだとショックですが(爆))
suexecについても勉強をしないといけないですね。(苦笑)
> 今回、何とかCGI実行できたのは、Fedora core1のApache2のRPMはsueexecが有効です。こちらを無効化して
> ユーザーディレクトリのAllowOverrideをnoneしました。これによって.htaccessが無効になり、CGI実行が
> 出来ました。ただ、.htaccessは使用したいので、AllowOverrideにnone以外のAllやAuthConfigを設定すると
> CGIが実行できませんでした。
「CGIが実行できませんでした。」どういうエラーだったのでしょうか?
Options にExecCGIを追加してますか?
> 「CGIが実行できませんでした。」どういうエラーだったのでしょうか?
> Options にExecCGIを追加してますか?
はい。ちゃんとあります。エラーは、「INTERNAL SERVER ERROR」の500です。
以下は、ユーザーディレクトリの設定です。
現在は、AllowOverride noneにしてあり、suexecファイルをリネームして無効化しています。
その為、.htaccessは使用できない状態です。
<Directory /home/*/./public_html/cgi-bin/>
AllowOverride All
Options MultiViews Indexes ExecCGI SymLinksIfOwnerMatch +IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS PROPFIND>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
> > 「CGIが実行できませんでした。」どういうエラーだったのでしょうか?
> > Options にExecCGIを追加してますか?
> はい。ちゃんとあります。エラーは、「INTERNAL SERVER ERROR」の500です。
> 以下は、ユーザーディレクトリの設定です。
> 現在は、AllowOverride noneにしてあり、suexecファイルをリネームして無効化しています。
> その為、.htaccessは使用できない状態です。
> <Directory /home/*/./public_html/cgi-bin/>
普通は、
Directory /home/*/public_html/cgi-bin/
ですよね。「./」なし。UserDirもこうなっているのですか?
ユーザ直下のpublic_htmlはsuEXECにも関係してきます。もともとこうなっていましたか?
後は、Tipsの3項あたりでしょうか?
ご指摘どおり、
> <Directory /home/*/./public_html/cgi-bin/>
の「./」を取ってみました所、起動しました。以前RedHat6をやっていたときはこれで作動していました。
何故だろう。これが、Apache1.3とApache2の違いですかね?それとも自分がずっと勘違いしていたのかな?
HTMLディレクトリは、<Directory /home/*/public_html/>で設定してます。
後は、suexecの設定でも動く為には、設定を勉強しなくては。。
今は、suexec無効のみで正常に動いています。エラーも特に無いようです。有難うございました。m(__)m
P.S
OS再インストール免れて(^。^;)ホッ
でも、インストール時は動いていたと思っていたのに。。。。