はじめまして。
昨日FedoraをインストールしWWWサーバーを立ち上げたばかりのLinux初心者です。
立ち上がったWWWサーバーにページを置いてみようとMozillaのHTMLエディタでページを作り
/var/www/htmlにページを置いてみました。
きちんと表示されるか別のパソコンのIEでサーバーにアクセスしてみましが、
ページは表示されるのですが文字が文字化けしていて全く文字が読めません。
文字コードを見てみると西ヨーロッパ言語(ISO)でした。
文字コードを日本語(自動選択)か日本語(シフト JIS)にしてみたところきちんと日本語で表示されたのですが、
ツールバーの更新ボタンを押したり、再度アクセスしたりすると、また文字化けしてしまいまいます。
HTMLに<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=Shift_JIS">
を入れてみましたが西ヨーロッパ言語(ISO)のままでした。
これはHTMLの問題なのでしょうか、それともWWWサーバーの問題なのでしょうか?
文字化けが直る方法をご存じの方いらっしゃいましたら、よろしくお願い致します。
> はじめまして。
> 昨日FedoraをインストールしWWWサーバーを立ち上げたばかりのLinux初心者です。
> 立ち上がったWWWサーバーにページを置いてみようとMozillaのHTMLエディタでページを作り
> /var/www/htmlにページを置いてみました。
> きちんと表示されるか別のパソコンのIEでサーバーにアクセスしてみましが、
> ページは表示されるのですが文字が文字化けしていて全く文字が読めません。
> 文字コードを見てみると西ヨーロッパ言語(ISO)でした。
> 文字コードを日本語(自動選択)か日本語(シフト JIS)にしてみたところきちんと日本語で表示されたのですが、
> ツールバーの更新ボタンを押したり、再度アクセスしたりすると、また文字化けしてしまいまいます。
> HTMLに<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=Shift_JIS">
> を入れてみましたが西ヨーロッパ言語(ISO)のままでした。
> これはHTMLの問題なのでしょうか、それともWWWサーバーの問題なのでしょうか?
> 文字化けが直る方法をご存じの方いらっしゃいましたら、よろしくお願い致します。
<httpd.conf>
AddDefaultCharset UTF-8
↓
AddDefaultCharset off
#AddDefaultCharset UTF-8
FedoraCore1は、UTF-8になっていますので、CGIをご利用の場合は、
OSのキャラクターセットを変更しないと将来的に面倒になる場合があります。
(jcode.pl等はUTF-8に対応されていません)
私もRH9とFedoraでサーバーを稼動させています。
Fedoraの場合暫定ですが、etc/sysconfig/i18nを変更しています
(i18nを変更することによりFedoraCode1をUTF-8からEUC-JPにできます)
早速のご返信ありがとうございます。
> <httpd.conf>
> AddDefaultCharset UTF-8
>
> ↓
> AddDefaultCharset off
> #AddDefaultCharset UTF-8
*さんありがとうございます。
なぜかAddDefaultCharset UTF-8の所がAddDefaultCharset ISO-8859-1になってました。
ですので
AddDefaultCharset off
#AddDefaultCharset ISO-8859-1
と入れてみました。
結果、無事に日本語で表示されるようになりました。
この直し方が間違っているようでしたらご指摘下さい。
> FedoraCore1は、UTF-8になっていますので、CGIをご利用の場合は、
> OSのキャラクターセットを変更しないと将来的に面倒になる場合があります。
> (jcode.pl等はUTF-8に対応されていません)
>
> etc/sysconfig/i18nを変更することにより、EUC-JPに変更できると思います。
Tonさんありがとうございます。
将来CGIも使いたいと思うので、etc/sysconfig/i18nを見てみました所
LANG="ja_JP.UTF-8"
SUPPORTED="ja_JP.UTF-8:ja_JP:ja"
SYSFONT="latarcyrheb-sun16"
となっていましたが、変更すべき所は、
LANG="ja_JP.UTF-8"をLANG="ja_JP.EUC-JP"と、
SUPPORTED="ja_JP.UTF-8:ja_JP:ja"をSUPPORTED="ja_JP.EUC-JP:ja_JP:ja"
に変更するだけで宜しいでしょうか?
間違っているようでしたらご指摘下さい。
私の設定は、RH9を写しただけです
LANG="ja_JP.eucJP"
SUPPORTED="ja_JP.eucJP:ja_JP.UTF-8:ja_JP:ja"
SYSFONT="latarcyrheb-sun16"
Fedoraでkentさんの掲示板が動かなくて困ってるときに、この記事見つけました。
Tonさんが言うように、etc/sysconfig/i18nを変更したんですが、
掲示板への書き込みができません。
掲示板の最初のページは表示されます。
どこが悪いんでしょう?
> Fedoraでkentさんの掲示板が動かなくて困ってるときに、この記事見つけました。
>
> Tonさんが言うように、etc/sysconfig/i18nを変更したんですが、
>
> 掲示板への書き込みができません。
ということはログなりメッセージが出ているはずですよね。その内容が大事であって、結果が書き込み不可なのです。不可になる原因はいろいろあるので、それを表しているログが重要なのです。それさえあれば、極端な話ですが、書き込みできないという情報はなくても解決できます。
> 掲示板の最初のページは表示されます。
コード系の問題ではなく、恐らく掲示板のデータファイル(EX. XXX.dat等)のパーミッションかオーナの問題、もしくは上位のフォルダのパーミッションの問題と思います。
> コード系の問題ではなく、恐らく掲示板のデータファイル(EX. XXX.dat等)のパーミッションかオーナの問題、もしくは上位のフォルダのパーミッションの問題と思います。
ユーザ「xxx」(/home/xxx)を作り、
Apacheのドキュメントルートを「/home/xxx/public_html」にしています。
ユーザディレクトリを「/home/*/public_html」としています。
そして、FTPでユーザ「xxx」でログインしpublic_htmlにアップしているのですが、これが問題でしょうか?
http://SERVER/cgi-bin/bbs/bbs.cgiでアクセスすると、ページは表示されますが、書き込みができません。
http://SERVER/~xxx/cgi-bin/bbs/bbs.cgiでアクセスすると、ページさえ表示されません。
どうでしょうか?
> > コード系の問題ではなく、恐らく掲示板のデータファイル(EX. XXX.dat等)のパーミッションかオーナの問題、もしくは上位のフォルダのパーミッションの問題と思います。
>
> ユーザ「xxx」(/home/xxx)を作り、
> Apacheのドキュメントルートを「/home/xxx/public_html」にしています。
> ユーザディレクトリを「/home/*/public_html」としています。
> そして、FTPでユーザ「xxx」でログインしpublic_htmlにアップしているのですが、これが問題でしょうか?
>
> http://SERVER/cgi-bin/bbs/bbs.cgiでアクセスすると、ページは表示されますが、書き込みができません。
> http://SERVER/~xxx/cgi-bin/bbs/bbs.cgiでアクセスすると、ページさえ表示されません。
>
> どうでしょうか?
と言われても・・・。BBSでありがちなパターンなので一言。
「掲示板は表示できるが、書き込みができない。」という表面上の現象で説明されているので
おやじはログをみるように助言しました。パーミッションの問題かもとも助言しました。
それの答えが、まったく関係ないディレクトリの話にバケ、かつログの話は何もなく、またまた
表面上の話という状況。
助言は無視してはいらっしゃるとは思いませんが、問題ないと判断されたのでしょうか?
BBSでサポートしてくれる方は、投稿者が書かれた乏しい情報から自分の知識で状況をシュミレーション
し、Resをつけてくれます。つまり頭の中で、自分のサーバとして状況把握しようとしているのです。
従って、サポータは自分が投げかけた助言の結果を期待し、その結果を持って不具合部分を特定して
いくので、うまくいこうが行かなかろうが、答えが帰ってくることを期待しています。
今の状況では、おやじにはサーバの状況が見えてきません。ディレクトリ問題は別の話です。
分からないので、いろいろ自分で考えられているのでしょうが、こういう対応はサポータの意欲を非常に
殺いでしまい、最悪無視されてしまいますよ。
で、ディレクトリの話は、下記を参考にしてください。ユーザが自分以外にいないなら、UserDirは
desableにし、http://server/~xxx/というアクセスは必要ないはずです。おやじのように複数のユーザが
使う場合も下記で分かるはずです。
http://www.aconus.com/~oyaji/faq/apache_html2.htm
http://www.aconus.com/~oyaji/tips/apache_tips3.htm
> と言われても・・・。BBSでありがちなパターンなので一言。
> 「掲示板は表示できるが、書き込みができない。」という表面上の現象で説明されているので
> おやじはログをみるように助言しました。パーミッションの問題かもとも助言しました。
> それの答えが、まったく関係ないディレクトリの話にバケ、かつログの話は何もなく、またまた
> 表面上の話という状況。
> 助言は無視してはいらっしゃるとは思いませんが、問題ないと判断されたのでしょうか?
> BBSでサポートしてくれる方は、投稿者が書かれた乏しい情報から自分の知識で状況をシュミレーション
> し、Resをつけてくれます。つまり頭の中で、自分のサーバとして状況把握しようとしているのです。
> 従って、サポータは自分が投げかけた助言の結果を期待し、その結果を持って不具合部分を特定して
> いくので、うまくいこうが行かなかろうが、答えが帰ってくることを期待しています。
> 今の状況では、おやじにはサーバの状況が見えてきません。ディレクトリ問題は別の話です。
> 分からないので、いろいろ自分で考えられているのでしょうが、こういう対応はサポータの意欲を非常に
> 殺いでしまい、最悪無視されてしまいますよ。
本当にすみませんでした。
助言を無視していたわけではないのですが、ディレクトリに問題があるかと気になり先に質問してしまいました。
> > と言われても・・・。BBSでありがちなパターンなので一言。
> > 「掲示板は表示できるが、書き込みができない。」という表面上の現象で説明されているので
> > おやじはログをみるように助言しました。パーミッションの問題かもとも助言しました。
> > それの答えが、まったく関係ないディレクトリの話にバケ、かつログの話は何もなく、またまた
> > 表面上の話という状況。
> > 助言は無視してはいらっしゃるとは思いませんが、問題ないと判断されたのでしょうか?
> > BBSでサポートしてくれる方は、投稿者が書かれた乏しい情報から自分の知識で状況をシュミレーション
> > し、Resをつけてくれます。つまり頭の中で、自分のサーバとして状況把握しようとしているのです。
> > 従って、サポータは自分が投げかけた助言の結果を期待し、その結果を持って不具合部分を特定して
> > いくので、うまくいこうが行かなかろうが、答えが帰ってくることを期待しています。
> > 今の状況では、おやじにはサーバの状況が見えてきません。ディレクトリ問題は別の話です。
> > 分からないので、いろいろ自分で考えられているのでしょうが、こういう対応はサポータの意欲を非常に
> > 殺いでしまい、最悪無視されてしまいますよ。
>
> 本当にすみませんでした。
> 助言を無視していたわけではないのですが、ディレクトリに問題があるかと気になり先に質問してしまいました。
ご理解いただきありがとうございます。ところで、解決できたのでしょうか?
どうしても駄目なら、書き込みできなかった時のログとディレクトリの構造、CGIをいれているディククトリとCGIおよび書き込みデータが入るファイルのパーミションをアップしてください。
> ご理解いただきありがとうございます。ところで、解決できたのでしょうか?
> どうしても駄目なら、書き込みできなかった時のログとディレクトリの構造、CGIをいれているディククトリとCGIおよび書き込みデータが入るファイルのパーミションをアップしてください。
少しずつ解決してきているので、もう少し頑張ってみます。
ドキュメントルートを/home/xxx/public_htmlにしています。
ユーザディレクトリを/home/*/public_htmlとし、この下にcgi-binディレクトリを作りその中にcgiを入れています。
/home/xxx/public_html/cgi-binの中にtest.cgiを置きました。
http://xxx.xxx.xxx.xxx/cgi-bin/test.cgiとアクセスすると正常に表示されます。
http://xxx.xxx.xxx.xxx/~xxx/cgi-bin/test.cgiとアクセスすると500エラーになってしまいます。
ログはこうなってました。
[Fri Mar 19 18:51:17 2004] [error] [client xxx.xxx.xxx.xxx] Premature end of script headers: test.cgi
どうでしょうか?
> ドキュメントルートを/home/xxx/public_htmlにしています。
> ユーザディレクトリを/home/*/public_htmlとし、この下にcgi-binディレクトリを作りその中にcgiを入れています。
普通、こういうディレクトリ構造にはしませんよね。ユーザが一人しかいないならユーザディレクトリなんか要らないし、おやじのようにするなら、ドキュメントルートは独立したディレクトリにすべきです。
> /home/xxx/public_html/cgi-binの中にtest.cgiを置きました。
>
> http://xxx.xxx.xxx.xxx/cgi-bin/test.cgiとアクセスすると正常に表示されます。
ScriptAlias /cgi-bin/を無効にしていれば、こうなるはずです。
> http://xxx.xxx.xxx.xxx/~xxx/cgi-bin/test.cgiとアクセスすると500エラーになってしまいます。
>
> ログはこうなってました。
> [Fri Mar 19 18:51:17 2004] [error] [client xxx.xxx.xxx.xxx] Premature end of script headers: test.cgi
パーミッションとオーナが書いていないので、なんともですが、あっていないのでは?ちゃんと設定できていれば、どちらでもアクセスできるはずです。
FAQを一度良く読んでもらえませんか? アクセス形態とディレクトリ構造を最終的にやりたい形に整理して、それからCGIをやってはどうですか? このままでは、仮に何とか動かしても、ディレクトリ構造を見直すと、また動かないようになってしまう気がします。
> 普通、こういうディレクトリ構造にはしませんよね。ユーザが一人しかいないならユーザディレクトリなんか要らないし、おやじのようにするなら、ドキュメントルートは独立したディレクトリにすべきです。
では、ユーザディレクトリが使いたくて、
あるユーザのディレクトリの中にドキュメントルートを置きたい場合、
ユーザディレクトリを/home/*/public_html
ドキュメントルートを/home/xxx/www/とすればよいでしょうか?
> ScriptAlias /cgi-bin/を無効にしていれば、こうなるはずです。
有効にしていてもなりますけど、この意味がよくわかりません・・。
> パーミッションとオーナが書いていないので、なんともですが、あっていないのでは?ちゃんと設定できていれば、どちらでもアクセスできるはずです。
ディレクトリもtext.cgiもパーミッションを777に設定しても同じ結果になります。
> FAQを一度良く読んでもらえませんか? アクセス形態とディレクトリ構造を最終的にやりたい形に整理して、それからCGIをやってはどうですか? このままでは、仮に何とか動かしても、ディレクトリ構造を見直すと、また動かないようになってしまう気がします。
エラー500のところは良く読ませて頂きましたが、他のところも詳しく読ませていただきます。
> あるユーザのディレクトリの中にドキュメントルートを置きたい場合、
> ユーザディレクトリを/home/*/public_html
> ドキュメントルートを/home/xxx/www/とすればよいでしょうか?
これでよいです。FTPすることを考えれば、これか、wwwフォルダなしかが使いやすいのではないでしょうか?
> > ScriptAlias /cgi-bin/を無効にしていれば、こうなるはずです。
>
> 有効にしていてもなりますけど、この意味がよくわかりません・・。
CGIのFAQをいろいろ見てください。
これが有効になっていると、
http://xxxxxxx/cgi-bin/test.cgi
とアクセスすると、上記のようなディレクトリ構造だと、/home/xxx/www/cgi-bin/test.cgiにはアクセスせず、ScriptAliasで指定したディレクトリ直下のtest.cgiを実行します。アクセス場所が違います。
このあたりもFAQに書いてありますので、全て、ご覧になるといいでしょう。
> > パーミッションとオーナが書いていないので、なんともですが、あっていないのでは?ちゃんと設定できていれば、どちらでもアクセスできるはずです。
>
> ディレクトリもtext.cgiもパーミッションを777に設定しても同じ結果になります。
場所違いなら404になるので、500になる原因は、コード系等の可能性もあります。同じものをアクセスしているなら、パーミッションぐらいしかないのですが?
こんな感じにhttpd.confを変更してみました。
+--------------------------------------
DocumentRoot "/home/xxx/public_html"
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/home/xxx/public_html">
Options FollowSymLinks Includes ExecCGI MultiViews
Order allow,deny
Allow from all
</Directory>
<IfModule mod_userdir.c>
UserDir /home/*
</IfModule>
<Directory "/home/*/cgi-bin">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
---------------------------------+
httpd.confには問題ないですか?
> 場所違いなら404になるので、500になる原因は、コード系等の可能性もあります。同じものをアクセスしているなら、パーミッションぐらいしかないのですが?
ディレクトリ・cgiファイル友にパーミッションを777に設定してもだめなら、パーミッションの問題ではなくなるのでは?
階層が深くなってきて見づらかったので勝手にこちらからレスさせていただきます。
Fedoraを使用していて、Apacheはパッケージ版ですか?もしそうであればsuexecが有効になっています。
この関係でユーザーディレクトリのCGIエラーが出ているのでは?自分もルートではOKのCGIをユーザーディ
レクトリに持ってくると500のエラーが出ました。まぁ、この時はユーザーディレクトリのCGI設定を
ちょこっとミスってましたが、それを直してもsuexecの関係で実行できませんでした。とりあえずsuexecを
理解するまで無効化しています。無効化は/usr/sbin/suexecをリネームしてます。httpd.confのmod_suexec
をコメントアウトでもいけるかもしれませんが。。。(No.2808でのやり取り参考)
おやじさん、この間は大変助かりました!(見解が違っていたらごめんなさい)
> 階層が深くなってきて見づらかったので勝手にこちらからレスさせていただきます。
> Fedoraを使用していて、Apacheはパッケージ版ですか?もしそうであればsuexecが有効になっています。
> この関係でユーザーディレクトリのCGIエラーが出ているのでは?自分もルートではOKのCGIをユーザーディ
> レクトリに持ってくると500のエラーが出ました。まぁ、この時はユーザーディレクトリのCGI設定を
> ちょこっとミスってましたが、それを直してもsuexecの関係で実行できませんでした。とりあえずsuexecを
> 理解するまで無効化しています。無効化は/usr/sbin/suexecをリネームしてます。httpd.confのmod_suexec
> をコメントアウトでもいけるかもしれませんが。。。(No.2808でのやり取り参考)
> おやじさん、この間は大変助かりました!(見解が違っていたらごめんなさい)
環境はその通りです。
ありがとうございます。やってみます。
> 階層が深くなってきて見づらかったので勝手にこちらからレスさせていただきます。
> Fedoraを使用していて、Apacheはパッケージ版ですか?もしそうであればsuexecが有効になっています。
> この関係でユーザーディレクトリのCGIエラーが出ているのでは?自分もルートではOKのCGIをユーザーディ
> レクトリに持ってくると500のエラーが出ました。まぁ、この時はユーザーディレクトリのCGI設定を
> ちょこっとミスってましたが、それを直してもsuexecの関係で実行できませんでした。とりあえずsuexecを
> 理解するまで無効化しています。無効化は/usr/sbin/suexecをリネームしてます。httpd.confのmod_suexec
> をコメントアウトでもいけるかもしれませんが。。。(No.2808でのやり取り参考)
> おやじさん、この間は大変助かりました!(見解が違っていたらごめんなさい)
今、まさにおやじのサイトをsuEXEC化しようとしているところです。今晩、移行予定です。
suEXECが有効になっているなら、CGIのパーミションを701、CGIが作成するlog等は600、lockファイル等は701にして、全てのCGI関係のファイル・フォルダの所有権をそのユーザ:グループに変更してください。
当然ですが、以前からアクセス方法が2つ提示されていますが、この設定をすると、~xxxxではCGIは動きますが、ダイレクトにドキュメントルートからは動きません。それが、suEXECです。
ドキュメントルートの考え方が、完全に間違っていて、逆です。先ほど自分で書かれたのと違いますよね。下記で動くはずです。suEXEC対応でコンパイルされていてsuEXECのまま動かすなら、ドキュメントルートやユーザディレクトリはコンパイル時に決められていますので、変更不可です。どういう設定でコンパイルされているかは、下記で(suexec -V)確認できます。どうしても変更したければ、srpmからコンパイルしなおすしかないです。
# suexec -V
-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=500
-D AP_HTTPD_USER="apache"
-D AP_LOG_EXEC="/var/log/httpd/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=500
-D AP_USERDIR_SUFFIX="public_html"
変更後のhttpd.conf例です。
DocumentRoot "/var/www/html"
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/home/*/public_html">
Options FollowSymLinks Includes ExecCGI MultiViews
Order allow,deny
Allow from all
</Directory>
<IfModule mod_userdir.c>
UserDir /home/*/public_html
</IfModule>
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
Linux初めてなんでよくわかりません。。
Fedoraと一緒にインストールしたapacheでは、suEXEC環境であり、suEXECを使いたくなければ再コンパイルしなければならないということですよね?
では、今のapacheをアンインストールして、配布されているapacheをインストールすることで解決できますか?
> Linux初めてなんでよくわかりません。。
>
> Fedoraと一緒にインストールしたapacheでは、suEXEC環境であり、suEXECを使いたくなければ再コンパイルしなければならないということですよね?
>
> では、今のapacheをアンインストールして、配布されているapacheをインストールすることで解決できますか?
皆さんのResを良く読みましょう。akifactoryさんも言ってますよね。suexecをrenameしなさいと。
# mv /usr/sbin/suexec suexec.bak
で大丈夫です。 今、suEXEC環境に移行しました。5分ほどおかしかったと思います。何かおかしかったらぜひ指摘してください。残作業が少しあるので、しばらく集中して点検しますので、resが遅れるかもしれません。コンテンツも今日中にアップ予定です。
> 皆さんのResを良く読みましょう。akifactoryさんも言ってますよね。suexecをrenameしなさいと。
>
> # mv /usr/sbin/suexec suexec.bak
>
> で大丈夫です。
いや、リネームしました。症状改善されません。。
ファイル名は別にsuexec.bakじゃなくてもいいんですよね?
>
> > 皆さんのResを良く読みましょう。akifactoryさんも言ってますよね。suexecをrenameしなさいと。
> >
> > # mv /usr/sbin/suexec suexec.bak
> >
> > で大丈夫です。
>
> いや、リネームしました。症状改善されません。。
> ファイル名は別にsuexec.bakじゃなくてもいいんですよね?
suexec以外なら何でもOKです。confを触ったら再起動(suexecはプロセスのkillを伴うので、現状では説明しても混乱するのでシステムを再起動してください)は必須ですがしましたか?
> suexec以外なら何でもOKです。confを触ったら再起動(suexecはプロセスのkillを伴うので、現状では説明しても混乱するのでシステムを再起動してください)は必須ですがしましたか?
もちろんしました。
ご迷惑をおかけしました。
今度はディレクトリ構成を変えた制でパーミッションの変更を忘れていました。。
パーミッションを変えたところ、正常に表示されました。
ものすごい困ってたんで、できたら嬉しいです。
おやじさんと、akifactoryさん、
本当にありがとうございました。