• ベストアンサー

Windowsで動いていたのにFedoraで動かない。

いつも諸賢にはお世話になります。入門以前の質問で恐縮ですが、ご教示下さい。 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 です。よろしくお願い致します。

  • PHP
  • 回答数6
  • ありがとう数3

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

  • ベストアンサー
回答No.5

根本的な問題だけどファイル名の大文字・小文字の関係は? Windowsでは関係ないけどLinuxだと別物として区別するけど そこら辺は?

spindle
質問者

お礼

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

その他の回答 (5)

回答No.6

長々とあれやこれや書きましたが、どうも的を得てなかったようです。 すみません。なにはともあれ、解決してよかったですね!

回答No.4

連続投稿ですみません。 >「ファイルが見つかりません」の原因とは関係が無いと思うのですが・・・。 混乱させたようで申し訳ありません。 私も無関係だと思ってました。。。 >/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のエラーログを見たらいかがでしょうか? 何か情報が得られるかもしれません。現状では、残念ながら私の力不足で、それくらいのアドバイスしかできないです。

回答No.3

とりあえず、これまでは出ていた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 と入力しなければなりませんよ。 #外していたらすみません。

回答No.2

Fedora上のブラウザ(mozilla?)から、操作してみてください。 mozillaから、http://localhost/xyz/ にアクセスすると、Index of /xyz が表示されるんですよね? そこで、一覧の中のtest.phpをクリックすると、どうなりますか?

spindle
質問者

お礼

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

spindle
質問者

補足

ブラウザ(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>

回答No.1

原因の切り分けのために、2~3質問をさせてください。 >ところが、​http://localdomain/xyz/​ form.htmlでフォームを表示させ(ここまではOK)、データをinputして送信すると、ファイルNot Found (HTTP404)エラーが出てしまいます。 HTTP404エラーの時、ブラウザのアドレスバーには、どのようなURLが表示されていますか? また、http://localdomain/xyz/test.php をブラウザのアドレスバーに入力すると、どのような表示になりますか?

spindle
質問者

補足

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> よろしくお願い致します。

関連するQ&A

  • httpd.confを添削してください!!(長文)

    こんにちわ いろいろと調べながらhttpd.confを自分の理想の動作を得るたねに設定したつもりです。 添削をお願いします。 /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ DocumentRoot /var/www/html <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory "/var/www/html"> #←home Options FollowSymLinks Includes AllowOverride All Order allow,deny Allow from all </Directory> #.htaccessを許可、cgiは不可、ssiは許可、シンボリックリンク許可 Order~略 <IfModule mod_userdir.c> UserDir public_html </IfModule> <Directory /home/*/public_html> AllowOverride AuthConfig Limit Options +ExecCGI +Includes </Directory> #ユーザー領域では.htaccessで認証、アクセス元などで制御の許可。 それ以外は不可。 homeでcgiが不可ですがここでは許可したいので+を付けた。 <Directory "/var/www/cgi-bin"> AllowOverride All Options ExecCGI Order allow,deny Allow from all AddHandler image .gif .jpg AddHandler text/html .htm .html </Directory> /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ こんな感じなんですがどこかおかしいでしょうか?

  • Fedora Apache ユーザディレクトリの設定 /をつけないと表示されない!

    Fedora CoreのApacheでユーザディレクトリのコンテンツを公開するため、下記のように設定しました。 <IfModule mod_userdir.c> UserDir public_html </IfModule> <Directory /home/*/public_html> AllowOverride All Options IncludesNoExec ExecCGI FollowSymLinks <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> で、ばっちり見れるようになったんですが、下記のような問題が残っています。 http://ホストアドレス/~ユーザ名/ では正常に表示されるが、 http://ホストアドレス/~ユーザ名 のようにスラッシュを省略すると、表示されない。 ご存知の方おられましたらよろしくお願いしますー!

  • Redhat9のHTTPDでCGIがつかえない

    まずやりたい事はユーザーごとにWEBができるようにして、CGIをpublic_html以下のどこにでもCGIが使えるようにしたい思っています。 いろんなサイトを見てhttpd.confをいじってますが、どうしてもCGIを実行しても500エラーがでます。perlの場所はあっているんですが。 httpd.confのいじった所は、 <IfModule mod_userdir.c> UserDir public_html </IfModule> と <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options IncludesNoExec ExecCGI FollowSymLinks <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> と ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"をコメントアウトしました。もしよろしければご指導のほどよろしくおねがいします。

  • ローカルのPHPファイルを表示できない

    LinuxでPHPの開発の勉強をしようとLAMPのインストールをしています。 EeePC 1000HにUbuntu 10.10を入れています。 昨日、Apache2.2 PHP5 MySQLを、apt-getで入れました。 info.phpというファイルを作り、 <?php phpinfo(); ?> と書いて保存しました。 Apache2.2では、localhostのデフォルトのDocumentRootが  /etc/apache2/sites-available/default に指定されていて、   /var/www  となっています。ここにinfo.phpを保存してfirefoxで  http://localhost/info.php を開くと、無事にinfoページがでました。ここまでは問題ありません。 次に、UserDirをa2enmodコマンドを使って設定し、 ユーザー(hoge)の homeディレクトリ以下にpublic_htmlをつくりました。この下に、 通常のindex.htmlファイルを保存して、 ~hoge/index.html が開くことも 確認しました。 その後で、 /home/hoge/public_html/ 以下にinfo.phpを保存し、 firefoxで開こうとすると、「アプリケーションの選択もしくは保存」という いつものダイアログが出てきてしまいます。 このように、/var/www に置いた場合と、public_html以下に置いた場合で firefoxの挙動が変わります。 apache2の /var/www へのアクセス指定するファイルが、 apache2/sites-available/defaultで、以下のようになっています。 <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> この中身の部分を、 apache2/mods-available/userdir.conf にコピペし、以下のようにしました。 <Directory /home/*/public_html>  Options Indexes FollowSymLinks MultiViews  AllowOverride None  Order allow,deny  allow from all   </Directory> apache2もリスタートしましたが、結果は変わりませんでした。 ここまでで行き詰まりました。 どなたか解決法を教えていただけませんか。 よろしくお願いします。

    • 締切済み
    • PHP
  • Fedora4にてXOOPSを設定し、ブラウザにてエラー403が表示する。

    xoopsをインストールを実施しようとブラウザのアドレス欄にて http://サーバー名/xoopsを記載した所、エラー403が表示しました。 色々と調べましたがわからず困っています。 OS:Fedora4 ApacheとPHPとmysqlは設定済みです。 尚、httpd.confのファイルに下記を追加しました。 Alias /xoops "/var/www/xoops" <Directory "/var/www/xoops"> DirectoryIndex index.php index.html AllowOverride None Options None Order allow,deny Allow from all Allow from ::1 AddHandler php5-script .php </Directory> ご教授をお願いします。

  • Apacheでのユーザーディレクトリ生成

    現在fedora core4 -Apache- でサーバー構築を勉強中なのですが、どうしても解決できない問題が出ました。それはユーザーディレクトリを生成した後、そのディレクトリにアクセスできないという問題です。 ユーザー[testuser]を追加し、/home/testuser/public_htmlを作成後 /home/testuser/public_html/index.htmlを作成、 httpd.confの設定を <IfModule mod_userdir.c> #UserDir disable UserDir /home/*/public_html/ </IfModule> # # Control access to UserDir directories. The following is an example # for a site where these directories are restricted to read-only. # #<Directory /home/*/public_html> # AllowOverride FileInfo AuthConfig Limit # Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec <Directory /home/*/public_html> AllowOverride All Options IncludesNoExec ExecCGI FollowSymLinks <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> とし、ttp://www.testsrv.net/~testuserにアクセスしたところ、 You don't have permission to access /~user1 on this server. アクセス権が無いとはじかれました。 この場合、アクセスできるようにするにはどのようにすれば良いのでしょうか?

  • httpd.confのDirectoryIndexを記述しても、DocumentRoot直下のindex.htmlが表示されない

    初歩的な質問でしたら、申し訳ありません。。。 Apacheを勉強し始めの初心者です。 Apache2.2をローカル(windowsXP)にインストールし、httpd.confの設定を、以下のようにしました。 -------------------------------------- DocumentRoot "E:/web" <Directory /> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> <Directory "E:/web"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> <IfModule dir_module> DirectoryIndex index.html </IfModule> -------------------------------------- ブラウザにて、「http://local/」にアクセスしても、index.htmlが表示されず、HTTP400のエラーが返ってきてしまいます。 (E:/web配下には、index.htmlが確実に存在します。。) なのですが、E:/web/test 配下に、E:/web直下と同じindex.htmlを置き、「http://local/test/」にアクセスすると、正常にindex.htmlが表示されます。 httpd.confに、VirtualHostの設定はしていません。 色々と調査し、試行錯誤してみたのですが、理由がわからずにいます。。。 DocumentRoot直下は、DirectoryIndexと関係ないのでしょうか?? 初歩的な質問でしたら、誠に申し訳ありません。。 また、初心者のため、情報が足りない事があるかもしれません。 その時は、がっつりご指摘ください。 環境: Apache2.2 Tomcat5.5

  • mod_rewrite(.htaccess)で静的化したいのですが。。

    mod_Rewrite(.htaccess)を使って静的化をしようとしています。 設定内容は、以下にしています。 --------------------- ■httpd.conf DocumentRoot "/var/www/html/" <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory "/var/www/html/"> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> --------------------- ■.htaccess RewriteEngine on RewriteRule ^/free/([0-9,a-z,A-Z]+)$ /free/index.php?action=$1 --------------------- 上記の設定だと次ページが表示されません。 また、httpd.confの設定に以下を追加すると正常に次ページが表示され、URLの静的化されます。 --------------------- RewriteEngine on RewriteRule ^/free/([0-9,a-z,A-Z]+)$ /free/index.php?action=$1 --------------------- .htaccessが有効になっていないか、もしくは.htaccessの格納場所が間違えているかと 思っているのですが、いろいろ試してみましたが結局うまくいきません。 .htaccessの格納場所は、http://ローカルIP/free/配下に置いてあります。 どなたかご存知の方はいらっしゃいますでしょうか。 上記の設定内容だけだと情報が足りないなどございましたら、おっしゃってください。 宜しくお願い致します。

  • ユーザー毎のディレクトリでCGIを設置

    ユーザー毎のディレクトリでCGIを設置可能にしようとしているのですが、うまくいきません。 教えて下さい。 【環境】 Apache/2.0.40 Red Hat Linux 8.0 【httpd.confの設定抜粋】 DocumentRoot "/home/homepage/public_html" <Directory /home/homepage/public_html> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> <IfModule mod_userdir.c> UserDir public_html </IfModule> <Directory /home/*/public_html> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> #ScriptAlias /cgi-bin/ "/home/homepage/public_html/cgi-bin/" 【.htaccessの設定】 AddHandler cgi-script .cgi Options +ExecCGI 以上のような設定で #!/usr/bin/perl print "Content-type: text/html\n\n"; print "hello"; こんなCGIをつくって実行してみました。 /home/homepage/public_html/cgi-bin/においたものはうまくいくのですが /home/user/public_html/cgi-bin/においたものはエラーになってしまいます。 エラーの内容は↓のとおりです。 Server error! The server encountered an internal error and was unable to complete your request. Error message: Premature end of script headers: hello.cgi If you think this is a server error, please contact the webmaster Error 500 perlのパスは間違ってないし、パーミッションも755にしてあります。 どうすればいいのか分からず困っています。 どこを調べれみればいいのかだけでも教えていただけると助かります。 よろしくお願いします。

  • Debian sarge apache2

    /var/wwwの下に作成したindex.htmlを置いても、 http://xxx.xxxx.xx.xx/apache2-default/のテスト画面をWEB公開したままです。設定が下記になっているからだと思いますが、通常は、どの設定をどのように直すことになりますか? /etc/apache2/sites-available# cat default ・ ・ ・ ・ ・ ・ ・ DocumentRoot /var/www/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all # This directive allows us to have apache2's default start page # in /apache2-default/, but still have / go to the right place RedirectMatch ^/$ /apache2-default/ </Directory> ・ ・ ・ ・ ・ ・ ・

専門家に質問してみよう