人に聞けない痔の悩み、これでスッキリ >>

Win VISTA XAMPP 1.8.0 です。
昨日まで正常に動いていたPHPが今日はエラー表示で全く動作しません。
何故でしょうか。
「Access forbidden!
要求されたオブジェクトのアクセス権がりません。読み込みが許可されていないか、サーバーが
読み込みに失敗したかでしょう。

サーバーの障害と思われる場合はウェブ管理者までご連絡ください。」

Error 403
127.0.0.1 Apache2.4.3(Win32)OpenSSL /1.0.1C PHP/5.4.7

という内容です。

===================================================================
全く原因が不明です。
宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

すみません、



xampp/apache/error/XAMPP_FORBIDDEN.html.var
これは、ディレクトリ名です。
Windowsであれば
C:\xampp\apache\error\XAMPP_FORBIDDEN.html.var
というファイルを、適当なエディタで開いて、後は前の説明通りに修正していただければ治ると思います。
    • good
    • 0
この回答へのお礼

 hogehoge78さん、回答有難うございます。

 回答頂いたとおりに試してみましたが、同じ状況です。
 
 間違って他のコードで開いたのでDOMがついてしまったのでしょうか。
 その場合にはどのようにしたらよいのでしょうか。

宜しくお願いします。

お礼日時:2013/08/21 19:10

回答遅くなりましたが、



BOMがついてしまっているのであればエディタで開き直して、ファイル名を指定して保存等で、BOMなしのUTF-8に保存し直す等していただければと思います。

ちなみにエラー画面ですが、
http://localhost/xampp/
にアクセスした時の禁止と、
http://localhost/
にアクセスした時の禁止でエラー画面が違いますが、どのようになっていますか?
    • good
    • 0

回答が遅くなってしまったため、既に解決済みかとは思いますが・・・



xampp/apache/error/XAMPP_FORBIDDEN.html.var
を見ていただくと、他のエラーファイルは全てCotent-TypeをUTF-8で送出するように記述されているのに、
このファイルだけ、ISO-8859-1を送出するようになっています。

付きまして、
Content-language: ja
あたりで検索していただき、その下の行にある、
Content-type: text/html; charset=ISO-8859-1
を、
Content-type: text/html; charset=UTF-8

に変更して下さい。
これで日本語の部分に関してのみではありますが文字化けしなくなります。

ちなみにですが、もし質問者さんが、ルータをお使いであれば、外部からの侵入者にWebサーバを公開したくないということであれば、ポートの開放をしない、ファイアウォールソフトウェア等で外部からのアクセスを弾く、ということを行ったほうがより効果的かと思います。
    • good
    • 0
この回答へのお礼

 hogehoge78さん、回答有難うございました。
 
 実は未だ解決していません。
 「Content-type: text/html; charset=ISO-8859-1」のファイルはどこにあるのでしょうか。
 
 apache>confを見たのですが、それらしき箇所が見つかりません出でした。

 宜しくお願いします。

お礼日時:2013/08/16 20:46

Apache2.4では、



アクセスを許可する記述方法そのものが以前と変更になりました。

■以前の書き方
Order allow,deny
Allow from all

で、全許可。127.0.0.1(自分自身)のみ許可したければ
Allow from 127.0.0.1
と記述する形式でした。

■2.4での書き方
Require all granted

で全て許可するとなり、

Require all denied

で全て拒否するとなります。

127.0.0.1(自分自身)のみ許可したければ、

Require ip 127.0.0.1

と記述する。


・・・というのがわかるのに時間がかかりました。
自分自身、如何にApacheの設定をまともにやっていないかが分かった次第です。

結論、
追記した分は全て消して、

Require ip 127.0.0.1

と記述して再起動してみて下さい。
    • good
    • 0
この回答へのお礼

 hogehoge78さん、回答有難うございました。

 Apacheの設定の方は何とか成功致しました。

 xamppのセキュリティ画面の文字化けは何とかならないものでしょうか。
 webで色々と調べては見ましたが、なかなかヒットしません。

お礼日時:2013/08/12 08:17

httpd.confの設定は変更をしていませんか?



またはphp.iniの設定の変更もされていないのでしょうか?

XAMPPをインストールしたディレクトリはProgram FilesではなくCドライブ直下になっていますか?

http://labs.m-logic.jp/2009/01/vistaxampp170_403 …

このような情報もあるようですが、この設定を試しても変わりませんか?

XAMPP内のapache/logsディレクトリにerror.logファイルがあると思いますが、そこにも何か怪しいエラーは出ていませんか?

情報が少なすぎて解決に近づく回答がしづらいです。
    • good
    • 0
この回答へのお礼

 hogehoge78さん、回答有難う御座います。

 #先ず、XAMPPをインストールしたディレクトリは「Cドライブ直下」になっていま
す。

#httpd.confの設定に関してですが、参考書等とを見ながら、セキュリティの観点か
ら、PC自体がWebサーバーとして公開されるのを避けるために、外部からのアクセ
スを拒否する必要があると書かれていましたので以下のように変更しました。

================================================
<Directory "C:/xampp/htdocs">
 ・
 ・
Require all granted
</Directory>

<Directory "C:/xampp/htdocs">
 ・
 ・
#Require all granted
Require all denied
Allow from local 127.0.0.1
</Directory>
================================================
<Directory "C:/xampp/cgi-bin">
 ・
 ・
AllowOverride None
Options None
Require all granted
</Directory>

<Directory "C:/xampp/cgi-bin">
 ・
 ・
AllowOverride None
Options None
#Require all granted
Require all denied
Allow from localhost 127.0.0.1
</Directory>
================================================

#そして、Basic認証にIDとPASSWARDを設定しました。

#php.iniファイルのについては、文字コードの設定変更を3か所、
タイムゾーンの設定を1か所変更しました。

 その後、普通にphpとして、動作時には、ID、PASSWARD認証のダイヤログも立
ち上がり、phpも正常に動作していました。

 そして、一旦PCの電源を落として、再度xamppを立ち上げると、
「Access forbidden!
要求されたオブジェクトのアクセス権がりません。読み込みが許可されていないか、サーバーが
読み込みに失敗したかでしょう。
サーバーの障害と思われる場合はウェブ管理者までご連絡ください。
Error 403
127.0.0.1 Apache2.4.3(Win32)OpenSSL /1.0.1C PHP/5.4.7」
というエラーでした。

その時の「XAMPP>apache/logs」の内容は、
==================================================================
[Wed Aug 07 16:57:39.547000 2013] [core:warn] [pid 804:tid 236] AH00098: pid file C:/xampp/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?

[Wed Aug 07 16:57:40.732600 2013] [ssl:warn] [pid 804:tid 236] AH01873: Init: Session Cache is not configured [hint: SSLSessionCache]

[Wed Aug 07 16:57:40.997800 2013] [mpm_winnt:notice] [pid 804:tid 236] AH00455: Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7 configured -- resuming normal operations

[Wed Aug 07 16:57:40.997800 2013] [mpm_winnt:notice] [pid 804:tid 236] AH00456: Server built: Aug 18 2012 12:41:37

[Wed Aug 07 16:57:40.997800 2013] [core:notice] [pid 804:tid 236] AH00094: Command line: 'c:\\xampp\\apache\\bin\\httpd.exe -d C:/xampp/apache'

[Wed Aug 07 16:57:40.997800 2013] [mpm_winnt:notice] [pid 804:tid 236] AH00418: Parent: Created child process 1292

[Wed Aug 07 16:57:46.286200 2013] [ssl:warn] [pid 1292:tid 240] AH01873: Init: Session Cache is not configured [hint: SSLSessionCache]

[Wed Aug 07 16:57:46.504600 2013] [mpm_winnt:notice] [pid 1292:tid 240] AH00354: Child: Starting 150 worker threads.
===================================================================
のようなものです。

 再度、httpd.confの設定を元に戻して動作させると正常に動作しましたが、
セキュリティ上の問題(PCがwebに公開される)が心配です。
 (httpd.confの設定を元に戻しても動作時には、ID、PASSWARDの認証を求められ
ます。

 設定を元に戻して、xamppのコントロールパネルから「セキュリティ」の画面を
見ると、画面が文字化けして、utf-8にエンコードをしても全くそのままです。

 何が原因でしょうか。どのようにすれば正常になるのでしょうか、
宜しくお願いします。

お礼日時:2013/08/08 11:28

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QApache(Ver 2.4.4)の設定のエラー

おはようござます。

Win VISTAです。
Apache(Ver 2.4.4)の設定をしています。(XAMPP 1.8.3)
いろいろと参考書を見ながら、意味もわからずhttpdファイル(C:\xampp\apache\conf\httpd)のセキュリティの設定変更をしていますが、
「Access forbidden! 要求されたディレクトリへのアクセス権限がありません。 インデックスドキュメントが存在しないか、 ディレクトリの読み込みが許可されていません。 サーバーの障害と思われる場合は、ウェブ管理者までご連絡ください。」

というエラーが出て困っています。

セキュリティの設定の変更までは、正常にインストールされているとの確認画面が出ていましたので、この変更のミスが原因としか考えられません。

何とど宜しくお願いします。

=============================================================

httpdファイル(C:\xampp\apache\conf\httpd)の内容(変更後です)
<変更前の内容はバックアップをとっていませんのでわかりません・・・・>

<Directory />
AllowOverride none
Require all denied
</Directory>

DocumentRoot "C:/xampp/htdocs"

<Directory "C:/xampp/htdocs">



# Order allow,deny
# Allow from all
Order deny,allow
Deny from All
Allow from localhost 127.0.0.1
# AllowOverride All


# Require all granted
</Directory>



<Directory "C:/xampp/cgi-bin">
AllowOverride None
Options None
# Order allow,deny
# Allow from all
Order deny,allow
Deny from All
Allow from localhost 127.0.0.1
# Require all granted
</Directory>

=============================================================
(C:\xampp\apache\conf\extra\httpd-xampp)<このファイルは全く書き換えていません。>

<Directory "C:/xampp/php">
AllowOverride None
Options None
Require all denied
<Files "php-cgi.exe">
Require all granted
</Files>
</Directory>



<Directory "C:/xampp/cgi-bin">
<FilesMatch "\.php$">
SetHandler cgi-script
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler None
</FilesMatch>
</Directory>

<Directory "C:/xampp/htdocs/xampp">
<IfModule php5_module>
<Files "status.php">
php_admin_flag safe_mode off
</Files>
</IfModule>
AllowOverride AuthConfig
</Directory>

</Directory>

Alias /licenses "C:/xampp/licenses/"
<Directory "C:/xampp/licenses">
Options +Indexes
<IfModule autoindex_color_module>


</IfModule>
Require all granted
</Directory>
=============================================================

おはようござます。

Win VISTAです。
Apache(Ver 2.4.4)の設定をしています。(XAMPP 1.8.3)
いろいろと参考書を見ながら、意味もわからずhttpdファイル(C:\xampp\apache\conf\httpd)のセキュリティの設定変更をしていますが、
「Access forbidden! 要求されたディレクトリへのアクセス権限がありません。 インデックスドキュメントが存在しないか、 ディレクトリの読み込みが許可されていません。 サーバーの障害と思われる場合は、ウェブ管理者までご連絡ください。」

というエラーが出て困ってい...続きを読む

Aベストアンサー

http://www.sssc.cc/wiki/index.php?Apache2.4%2FTips
http://blog.matsumoto-r.jp/?p=3482

<RequireAny>
Require all denied
Require ip 127.0.0.1
Require localhost
</RequireAny>

かなり書き方が変わってしまったようです。Apacheが2.4というところがキモでした。

QPHPがLocalhostのフォルダ内で実行できない

WindowsVista でPHPを使っています。
XAMPPを、D:/Program Files
にインストールし、
http://localhost/echo.php
は、正常に実行できました。

しかし、この「echo.php」ファイルを、
http://localhost/work/echo.php
に移すと、実行できません。

なぜなのでしょうか。

お手数をおかけして申し訳ありません。
教えてください。

Aベストアンサー

workフォルダは、htdocsのフォルダの中にありますか?
そうであれば、workの権限がhtdocsと同じになっているか確認してください。
そうでなくてもworkの権限を確認してみてください。

Qillegal string offset

php5.3では動いていたプログラムをphp 5.4 で動かしたらwarning illegal string offsetが出て困っています。以下のプログラムでwarningが出ないようにするにはどのようにコーディングすればよいのでしょうか?


$a = array('exists' => 'foo');
if ($a['exists']['non_existent']) {
print 1;
}
print 2;
exit;

Aベストアンサー

isset()を使えばいいと思います

Qsyntax error, unexpected '}' というエラーの対処法

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" maxlength="3" />
<input type="sbumit" value=回答" />
</form>
<hr />
<?php
session_start();
if(is_null($_SESSION['answer'])){
mt_stand(microtime()*1000000);
$_SESSION['answer']=mt_rand(1,100);
$_SESSION['game_cnt']=0;
}
if($_POST['answer']!=""){
$_SESSION['game_cnt']++;
if($_session['answer']==$_POST['answer']){
print("おめでとうございます".
$_SESSION['game_cnt']."回で正解しました!");
session_destroy();
}else{
if($_SESSION['answer']>$_POST['answer']){
print("もう少し大きいです。");
}else
print("もう少し小さいです。");
}
}
}
?>
</body>
</html>
それとこの間違えたところをなおしたあとはいつもコンピュータを再起動しないと修正したところが適用されないのですがほかに方法はないですか?基本的な質問ですいません。

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" max...続きを読む

Aベストアンサー

print("もう少し大きいです。");
}else
print("もう少し小さいです。");
のelseの後に{がないようですが、大丈夫でしょうか?

QJavaScriptde途中で、「exit」するには?

function kensaku(){
s_data = document.kaiin_form.input_name.value;

if(!s_data){ alert("キーワードを入れて下さい!"); }

if(s_data != dumy){ ...... }
for(i=st_no;i<=n;i++){
......省略.................;
.......省略................}
}

----------------------------------
3行目で表示されたアラートをOKで閉じても、4行目以下が実行されてしまいます。
3行目でexitするにはどうすれば良いでしょうか?

Aベストアンサー

>関数(kensaku())からは抜けられませんでした。
そうですね、勘違いしていました、f(^^;
すみません。
if(!s_data){
alert("キーワードを入れて下さい!");
return;
}
ですね。

QERROR1062:Duplicate entry.....というエラーが出てしまいました

いつもお世話になります。
データベースからSELECTで抽出したデータを別のテーブルにINSERTするSQLを実行したのですが、
ERROR1062:Duplicate entry.....というエラーが出てしまいました。
お詳しい方がいらっしゃいましたら、アドバイスをいただけませんでしょうか?よろしくお願いいたします。
【実行したSQL】
INSERT INTO tblA (dataA1, dataA2, dataA3, dataA4) SELECT "9001","AA",dataB1,dataB2 FROM tblB WHERE dataB1 = 52

tblAの主キー:dataA1とdataA2
tblBの主キー:dataB1

dataA1とdataA2はtblAの主キーとなっているため、重複してしまうということのようです。tblBの主キーはdataB1であるため、抽出されてくるデータは常に1件なので問題ないと期待していましたが、甘くなかったようです。何か良い方法はないものでしょうか?よろしくお願いいたします。

Aベストアンサー

「ERROR 1062」は、重複データを格納しようとした場合に出力されるエラーです。
既にdataA1='9001'&dataA2='AA'という行が、tblAに格納されているのですよね?

>抽出されてくるデータは常に1件なので問題ないと期待していました

「insert ~ select ~」を実行前に、既に同じデータが格納されているのでは?
あるいはprimary keyの指定が、質問中に記された通りでなく、2件以上検索されているかです。

>何か良い方法はないものでしょうか?

何をするための方法を、聞きたいのかが分かりませんが?

QParse error: syntax error, unexpected T_STRING in・・・118と出るのですが

Parse error: syntax error, unexpected T_STRING in 。。。 on line 118
とでるのですが対処はどうすればよろしいでしょうか?

Aベストアンサー

118行目をみてみてください。
ダブルクォーテーションのなかでダブルクォーテーションを使ったり
してませんか?
基本的な文法ミスなので、自己解決できないと今後きびしいですよ。

QボタンをクリックでPHP文を実行

ボタンをクリックしたときのみPHP文を実行したいのですが・・・

<input type="button" onClink="<?php~?>">
でいけるかと思ったのですが、
ページ表示時に<?php~?>が実行されてしまい、うまくいきませんでした。

onClink="window.open(test.php)"
という方法以外でお願いします。

Aベストアンサー

AjaxはもともとJavaScriptの機能である非同期通信をつかったもので。Ajaxという言語があるわけではありません

Ajaxを利用するのであれば、JavaScriptのXMLHttpRequestを使って非同期通信できるような実装をしなくてはなりません
簡単にサンプルコードで書けるほど単純なものでもありません

一般的なサーバーサイドスクリプトの動作として、
ボタンを押す->サーバーへリクエストする->サーバーが処理する->クライアントに何かしらの結果を返す(出力する)です
つまり、PHP等のサーバーサイドスクリプトは、遷移させることが大前提で動作します

ですから、ボタンを押してその場でJavaScriptと同じようにPHPが動くなんてことはありえません。
ボタンを押したらサーバーにリクエストする という動作ならば可能です。

つまり
質問で言われているような
onClink="window.open(test.php)"

<form name="f1" action="test.php" method="post">
<input type="submit" name="submit" value="submit" />
</form>
等のような形になります

こういった一般的な方法だと いちいち画面が切り替わったようになってしまうのを嫌って Ajaxでコレと同じことを、画面を切り替えずに行っているだけに過ぎません

AjaxはもともとJavaScriptの機能である非同期通信をつかったもので。Ajaxという言語があるわけではありません

Ajaxを利用するのであれば、JavaScriptのXMLHttpRequestを使って非同期通信できるような実装をしなくてはなりません
簡単にサンプルコードで書けるほど単純なものでもありません

一般的なサーバーサイドスクリプトの動作として、
ボタンを押す->サーバーへリクエストする->サーバーが処理する->クライアントに何かしらの結果を返す(出力する)です
つまり、PHP等のサーバーサイドスクリプトは、...続きを読む

Qlocalhost127.0.0.1で403エラー

PHPの勉強を始めようとしているのですが、出だしの設定で躓いたので質問です。

XAMPPをインストールし、htdocsにtest.htmlを置いたのですが、
localhost/test.htmlにアクセスすると403エラーになって今います。

考えられる原因をご教示いただきたくお願い申し上げます。

なお、thdocsの下にディレクトリ「test」を置いて、その下にtest.htmlを置くと、
localhost/test/test.htmlに正しく表示されます。

OSはwindows7(64bit)です。

Aベストアンサー

403エラーは、サーバ側で見たいファイルが閲覧禁止になっている場合に出ます。

多分ですが、Apacheの設定ファイルの編集が必要ではないでしょうか。

QApacheでhttp://localhost/が表示されない

Apacheバージョン2.0.50をインストールし、設定ファイルは一切変更していない状態でhttp://localhostと入力しても「あなたの予想に反して・・・」のページが表示されません。
何回かApacheの再インストールも試してみましたが変化がありません。
ローカルで動作確認するだけなので、インストールにあたってNetworkDomainなどのアドレスは「localhost」を入力しています。
何か原因を特定する方法はありませんでしょうか。
ちなみにOSはWindowsXPのHomeEditionです。

Aベストアンサー

(1) まずは、Apacheが起動しているか確認しましょう。
  これは管理ツールのサービス、Apache Server Monitorを見ればわかります。

(2) ポート番号80がLISTEN状態になっているか確認しましょう。
  これはnetstatコマンドで確認できます。

(3) パーソナルファイアウォールソフトをインストールしているなら、
  localhost:80 からの接続を許可しているか確認してみましょう。

(4) IISなど、他のwebサーバを同時に動かしていないか確認してみましょう。

(5) ブラウザでプロクシサーバを指定しているのでしたら、
  localhostはプロクシーを見ない、など設定してみてください。


ほかにもいろいろありますが、Apacheの設定の前に、これくらいは確認しましょう。


人気Q&Aランキング