重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

いつも諸賢にはお世話になります。入門以前の質問で恐縮ですが、ご教示下さい。
Windows機で動作が良好であることを確認した後のデータ入力用フォームform.htmlとmysqlにデータを登録するtest.php スクリプトを、FedoraCore4サーバの"/var/www/html/xyz"にアップロードしました(ハブで繋いでいる家庭内LANです)。
ところが、http://localdomain/xyz/ form.htmlでフォームを表示させ(ここまではOK)、データをinputして送信すると、ファイルNot Found (HTTP404)エラーが出てしまいます。
http://localdomain/xyz/でEnterとすると、Index of /xyzの中にform.htmlとtest.phpが見えています。ファイル名は間違っていません。form.htmlとtest.phpスクリプトは、問合せ字数制限のためここに記載できませんが、windows機で順調に動きました。LAN経由のWindowsクライアント機からもFC4単体機からも、同様に不調です。NotFoundになるのは何が原因でしょうか?

両ファイルのパーミッションは755としてあり、
pearの在処は、/usr/share/pear、/usr/bin/pearなので
php.iniは、include_path = ".:/php/includes:/usr/share/pear"としています。
httpd.conf(抜粋)は、
UseCanonicalName Off
DocumentRoot "/var/www/html"
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<IfModule mod_userdir.c>
UserDir disable
</IfModule>
DirectoryIndex index.html index.html.var index.php です。よろしくお願い致します。

A 回答 (6件)

根本的な問題だけどファイル名の大文字・小文字の関係は?


Windowsでは関係ないけどLinuxだと別物として区別するけど
そこら辺は?
    • good
    • 0
この回答へのお礼

ご指摘の通りでした。基本の基でした。不思議なことに、アップロードの際に小文字が大文字に一部(全部ではないのです、不思議です)に変更されていたのです。虚を突かれた感じです。
WinSCPの使用法が間違ったのでしょうか?FFFTPを使った方が良いのでしょうか?
いずれにしても、解決することが出来ました。
toro777777様、有難うございました。
また、fdsjaklfjas様にも大変お手数をかけて頂き、本当に有難うございました。今後ともよろしくご指導頂きますようお願い致します。

お礼日時:2006/11/28 23:02

長々とあれやこれや書きましたが、どうも的を得てなかったようです。


すみません。なにはともあれ、解決してよかったですね!
    • good
    • 0

連続投稿ですみません。



>「ファイルが見つかりません」の原因とは関係が無いと思うのですが・・・。 混乱させたようで申し訳ありません。

私も無関係だと思ってました。。。

>/xyz/にほかのhtmlをおき、ブラウザで開くと見ることが出来ますが、php文を開こうとすると、やはり「ファイルが見付かりません」となるのです。php.iniか、httpd.confの設定が間違っているのでしょうか?

でも、以下のように、Index of /xyz からtest.phpにアクセスした場合、PHPは実行できている訳ですよね?

>ブラウザ(mozilla)で、Index of /xyz からtest.php をクリックすると、
Notice:Undefined index:name in /var/​www/html/xyz/test.php​ on line 16

Noticeなどが出ていますが、PHPが実行できている証拠です。だから、httpd.confやphp.iniのせいではないと思うんです。httpd.confは、ざっとみさせてもらっていますが、特に問題となるところは無さそうですし。

Index of /xyz経由では、http://localhost/xyz/test.php がNot Foundを返さないのに、同じmozillaのアドレスバーに同一のURLを直接入力した場合にはNot Foundになるというのが不思議です。

今一度、apacheのエラーログを見たらいかがでしょうか? 何か情報が得られるかもしれません。現状では、残念ながら私の力不足で、それくらいのアドバイスしかできないです。
    • good
    • 0

とりあえず、これまでは出ていたNot Foundエラーは出ないんですよね。



Fedora上のブラウザ(mozilla)から、
http://localhost/xyz/form.html
にアクセスして、フォームをサブミットしたら、少なくともNot Foundエラーは出ないと思うんですが、どうでしょう。

これまでNot Foundが出たときは、Windows端末のブラウザから、
http://localhost/xyz/form.html
にアクセスしていたんではないかと思うんですが、違いますか?
Windows端末のブラウザから、FedoraのWebサーバにアクセスする際は、IEなどのアドレスバーに、
http://<FedoraのIPアドレスなど>/xyz/form.html
と入力しなければなりませんよ。

#外していたらすみません。
    • good
    • 0

Fedora上のブラウザ(mozilla?)から、操作してみてください。


mozillaから、http://localhost/xyz/ にアクセスすると、Index of /xyz が表示されるんですよね? そこで、一覧の中のtest.phpをクリックすると、どうなりますか?

この回答への補足

ブラウザ(mozilla)で、Index of /xyz からtest.php をクリックすると、
Notice:Undefined index:name in /var/www/html/xyz/test.php on line 16
Notice:Undefined index:OS in /var/www/html/xyz/test.php on line 22
DB Error: no such field
と出ました。test.phpの省略なしのコードは以下の通りです。
<html>
<body>
<?php
require_once("DB.php");
$dbUser="abcd";
$dbPass="efghij";
$dbHost="localhost";
$dbName="sampledb";
$dbType="mysql";
$dsn="$dbType://$dbUser:$dbPass@$dbHost/$dbName";

$conn=DB::connect($dsn);
if(DB::isError($conn)){
die($conn->getMessage());
}
$name=addslashes($_POST['name']);
$sql=<<<EOS
insert INTO member(name)
VALUES('$name')
EOS;

if(preg_match("/Windows/",$_ENV['OS'])){
$sql=mb_convert_encoding($sql,"SJIS","EUC_JP");
}
$result=$conn->query($sql);
if(DB::isError($result)){
die($result->getMessage());
}

$count=$conn->affectedRows();
print"データを".$count."件、登録しました。";
$conn->disconnect();
?>
</body></html>

補足日時:2006/11/26 22:12
    • good
    • 0
この回答へのお礼

補足です。[no such field]は、質問文を作る段階でスクリプトを短縮するため氏・名のうち一つを省略したので、mysqlのフィールドと整合性が失われて出てしまったと思います。
「ファイルが見つかりません」の原因とは関係が無いと思うのですが・・・。 混乱させたようで申し訳ありません。 
/xyz/にほかのhtmlをおき、ブラウザで開くと見ることが出来ますが、php文を開こうとすると、やはり「ファイルが見付かりません」となるのです。php.iniか、httpd.confの設定が間違っているのでしょうか?

お礼日時:2006/11/26 23:40

原因の切り分けのために、2~3質問をさせてください。



>ところが、​http://localdomain/xyz/​ form.htmlでフォームを表示させ(ここまではOK)、データをinputして送信すると、ファイルNot Found (HTTP404)エラーが出てしまいます。

HTTP404エラーの時、ブラウザのアドレスバーには、どのようなURLが表示されていますか?

また、http://localdomain/xyz/test.php をブラウザのアドレスバーに入力すると、どのような表示になりますか?

この回答への補足

fdsjaklfjas様;レスポンスが遅れて申し訳ありませんでした。
1.エラーが表示された時のURLには、http://localhost/xyz/test.phpと出ます。
2.http://localhost/xyz/test.phpをアドレスバーに入れると、
[Not Found The requested URL /xyz/test.php was not found on the server./
Apache /2.0.54(Fedora)Server at localhost Port80]と出ます。

コードは次の通りです。
[form.html]
<html><form name="form1" method="post" action="test.php">
名前<br><input type="text" name="name"><br>
<input type="submit" value="送信">
</form></body></html>

[test.php]
<html><body>
<?php require_once("DB.php");
定義省略
$dsn="$dbType://$dbUser:$dbPass@$dbHost/$dbName";
$conn=DB::connect($dsn);
if(DB::isError($conn)){die;}
$name=addslashes($_POST['name']);
$sql=<<<EOS
insert INTO member(name) VALUES(‘name')
EOS;
}
$result=$conn->query($sql);
if(DB::isError($result)){die;}
?></body></html>
よろしくお願い致します。

補足日時:2006/11/26 19:58
    • good
    • 0

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