• ベストアンサー

サーバーへアプロード、エラーになります

 レベルは、日曜プログラマーで、ローカルでPHP+MySQL(Windows)で簡単なイントラを構築しています。  今回、プロバイダのサービスディスク容量が一杯になり契約を更新しようと思いましたところ、PHPを使わせてくれ、しかも安くてメール容量が多いという契約があり、薦めてくれるままに入りました。  で、ためしに、 test.php <?php echo("Hello \n"); ?> をアプロードして、ブラウジングしたところ、 Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. というエラーがでました。 そこで、プロバイダへ電話をして、尋ねたところ、エクステンションを「php」では動きませんので「cgi」にしてくださいと言われ、そのようにしたのですが、同じエラーがでます。(説明書には「phpもしくはcgi」と書いてあります。) で、電話にて、「ソースを見せてもらいましたが、指定ができてない。」旨指摘されました。 いろんな本を読んだり、ウェブで検索しても載っていないので、たぶんかなり初歩的な質問だと思うのですが、 PHPもPerlのように、パスを指定しなければいけないのでしょうか? 説明書を読みましたが、そのあたりの記述がみあたりません。 かなり以前になりますが、ローカルでLinux+Apache+PHPで構築したときも、そんな設定は無かったように記憶しているのですが、勘違いでしょうか? ご存知の方、具体的に教えていただけないでしょうか? なお、 説明書には、.htaccessは設置しなくていいと書いてあります。関係無いとは思いますが、cgi-binも設置不要とあります。 サーバーのPHPバージョンは4.3.11とありますが、実際に調べてみると、4.4.4でした。サーバーはfreeBSDのようです。徒労とは思いましたが、パーミッションはいといろ試してみました。777、755、700、644、600等々

  • PHP
  • 回答数2
  • ありがとう数4

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

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

え~とPHPは超初心者ですが、、 1. PHPにはApacheのモジュールとして動くものとPerlのCGI等と同じように動くものと有ります  これはサーバーにどういう形でインストールしたかなのですが  サーバーによってはモジュール版、CGI版 両方がインストールされている場合も有ります http://wiki.bit-hive.com/tomizoo/pg/PHP%20CGI%A4%C7%A4%CE%BC%C2%B9%D4 2.プロバイダの説明で php のパスは有りますか?   大概は /usr/bin/php か /usr/local/bin/php ですが   もしコマンドラインでログインできるなら $ which php で調べてください 3. で /usr/local/bin/php だった場合ですが  なんかプロバイダの説明が怪しい気がするのは私だけ? かも知れませんが  以下 の内容で php.cgi と言うfileを作って サーバーにアスキーモードで転送してください #!/usr/local/bin/php <?php echo "Content-type: text/html\n\n"; phpinfo(); ?>  パーミッションは取り合えず 755 (で、動いたら705 、もしsuexecなら 700でも動くはず ) 4. で http://hoge.example.com/php.cgi にアクセスして   画面に Content-type: text/html が表示されているようなら   本当にCGI版ですから 次からは   echo "Content-type: text/html\n\n"; 行は不要です   画面に Content-type: text/html が表示されなければ   CGI版ではなくCLIのはずですから   次からも echo "Content-type: text/html\n\n"; の記述を入れてください    (この場合はモジュールとしても動くかもしれませんが) 5. おなじみの phpinfo() 画面ですが 今まで質問者さんが見慣れたものは   Server API の欄が "Apache 2.0 Handler" などと成っていたと思いますが   今回のは Server API欄が "CGI" と成っているはずです

参考URL:
http://jp.php.net/manual/ja/features.commandline.php
rakujin
質問者

お礼

詳しいご説明、ありがとうございます。よく理解できました。 気になっていたものですから、あれこれ考えて、またウェブを検索して、どうにか自己解決できました。CGIとモジュールの二つがあることを知りませんでした。PHPはモジュールだけだと思っていましたので、深みにはまったようです。#1さんumasikajiroさんのご指摘どおりにしますと、きちんと動きます。CGIで動いていたようです。phpinfo()で見ましたら、たしかにServerAPIはApache 2.0 Handlerではなく、CGIとなっていました。また、説明書ではVer4.3.11で、案内では4.4.4で実際には4.4.6となっており頻繁に更新しているようでした。(逆の意味で、親切なプロバイダかもしれませんね) //----------これで動きました test.cgi 705 (やはり拡張子はphpではだめでした) #!/usr/local/bin/php <?php echo("Hello \n"); ?> //-------------------------- このサイトの回答者の方々にはほんとうに感謝します、昔なら解らないで終わったことが、このようにして解決でき、しかもおまけの知識まで付けることができます。 加齢のせいにしてはいけないのでしょうが、最近どうも頭が固くなったようで、思い込みが激しくなりました。今回はほんとうに良い勉強になりました。ありがとうございました。

その他の回答 (1)

  • oka5130
  • ベストアンサー率66% (35/53)
回答No.1

パスは環境によるのでわからないのですが、 CGI版のPHPを利用する場合は次のように記述する必要があります。 test.cgi(拡張子は.cgi) ------------------------ #!/usr/local/bin/php <?php phpinfo(); ?> ------------------------

rakujin
質問者

お礼

自己解決できました。 oka5130さんご指摘のようにすると、きちんと表示されました。 説明書にはphpでも、cgiでも良いと書いてありましたが、やはり電話での連絡のようにcgiでないと動きません。また、モジュールじゃなくてご指摘どおりCGI版のようです。エラーのおかげで、他のことも検索中に調べ大変勉強になりました。ほんとうにありがとうございました。

関連するQ&A

  • CGIでInternal Server Error(サーバー内部エラー)

    設置したCGIでInternal Server Error(サーバー内部エラー)となってしまいます。主な原因として挙げられるのものは何でしょうか?。よろしくお願いいたします。

  • Internal Server Error???

    こんにちは。 CGIを作ったのですが、 【Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, webmaster@life-web.com and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log. 】 と言うエラーが出て動きません. もう一つ同じようなcgiを作ったのですが、そちらは普通に動きます.すみませんが、このエラーの場合はどうしたらいいですか? CGIはメールフォームからのメールを送信するものです。

    • ベストアンサー
    • CGI
  • Internal Server Error

    Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. 上記のメッセージがでます。シンタックチェックはOKです。パーミッションはcgiフォルダは:705 cgiファイルは:700 他のパーミッションも確認しています。-wオプションをつけてもそれ以上のものは表示しません。原因場所が判らないので仕方なく読み込んだところで表示するサブルーチンを設定し、原因場所を特定しようとしました。サブルーチンの部分が読み込まれ表示されれば、そこまでは正常と判る様にしてあります。しかし、プログラムの最初の部分においても、上記のエラーがでます。こういう時の原因を教えてください。

    • ベストアンサー
    • Perl
  • CGI設置時に500エラーになります

    CGIを設置しようとしたところ、500 Internal Server Error になります。 共用サーバーIDを使用しています。 CGIファイルは「cgi-bin」の中に入れています。 たとえばこんな簡単なCGIでテストしたのですが、500 Internal Server Errorになってしまいます。 ↓ #!/usr/local/bin/perl print "Content-type: text/html \n\n"; print "Hello"; #!/usr/local/bin/perlを #!/usr/bin/perlにしても結果は同じです。 (サーバーの指定は#!/usr/local/bin/perl) パーミッションは755にしています(705に変えてもダメでした)。 CGIファイルの改行コードはLFにしており、テキスト(ASCII)モードでアップロードしています。 それでも500 Internet Server Errorになります。 サーバーではエラーログが見られないのでみなさんにお聞きしたいのですが、他にどんな原因が考えられるでしょうか?

  • Internal Server Errorについて

    いつもご丁寧なご回答本当にありがとうございます。 postmailをサーバーに転送し、メールの送信を試してみたところ下記のエラーが出てしまいました。 パーミッションの確認、センドメールのパス、CGIのパス、メールアドレスの確認もしましたが、間違っていないようです。 サーバーはセンドメール自作CGIが使えるサーバーです。 入力ソースのformもpostmail-cgiで記載しています。 良い、アドバイスがありましたら是非、宜しくお願いいたします。 Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, info@stepserver.jp and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log. -------------------------------------------------------------------------------- Apache/1.3.41 Server at sss002.kix.ad.jp Port 443

    • 締切済み
    • CGI
  • 500 Internal Server Error

    500 Internal Server Errorが出ます。 サーバ:CentOS6.4 サーバ側の文字コード:UTF-8 perlのパス:/usr/bin/perl index.cgiの文字コード:LF (サーバ上で直接作成) index.cgiのパーミッション:777 (パーミッションの問題を避けるためわざと、777に設定) ここで、サーバ上で直接実行 perl /var/www/html/index.cgi すると、正しく処理の結果が返ってきてエラーは出ません。 しかし、クライアントのブラウザでindex.cgiにアクセスすると、500 Internal Server Errorが出ます。 なお、index.cgiを設置するディレクトリはApacheで以下のように設定しcgiスクリプトを有効にしています。 <Directory “/var/www/html”> Options FollowSymLinks ExecCGI </Directory> AddHandler cgi-script .cgi .pl #AddDefaultCharset UTF-8 ******************************************************* 【/var/www/html/index.cgi】 #!/usr/bin/perl print "Content-type: text/html"; print "<html>"; print "<body>"; print "<p>"; print "CGI"; print "</p>"; print "</body>"; print "</html>"; スクリプトの文法に問題があれば、サーバ上で直接実行させた時点でエラーを吐きそうですし、 パーミッションは777にしていますし、Apacheの設定もcgiを有効にしているので 他に500 Internal Server Errorが出る原因が掴めません。 Apacheの設定で、#AddDefaultCharset UTF-8 として文字セットを無効にした場合は CGIスクリプトの方で何か追加してやらないと、文字化け以前の問題で必ず500 Internal Server Errorを吐くんですかね? ご指導のほどよろしくお願い致します。

    • ベストアンサー
    • CGI
  • Internal Server Errorについて

    Webサーバー(Apache)を構築して、ブログを公開しようと思ったのですが、 Internal Server Errorとなりうまく表示できません。 状況は ローカルエリアネットワーク内のデバイスで接続した場合: (1).ローカルIPアドレスでブログにアクセス:OK (2).グローバルIPアドレスやドメイン名でブログにアクセス:Internal Server Error ローカルエリアネットワーク外のデバイスで接続した場合: (携帯の回線から接続しました。) (3).グローバルIPアドレスやドメイン名でブログにアクセス:OK エラーの原因は何が考えられますか。 WebサーバーのOS:CentOS6.4

  • レンタルサーバーとプロバイダは別に契約するのですか?

    PHPやwebデザインの勉強をしているのですが、今契約しているプロバイダが無料で貸してくれるホームページが、自分で作ったPHPを設置できないとのことなので、プロバイダを変えようとしたところ、そこも設置できないといわれました。プロバイダとは別にレンタルサーバーを契約する必要があるのですか?ローカルでしかPHPの勉強が進まなくて困っています。 基本的なことですみませんが、よろしくお願いいたします。

  • 500サーバー エラー

    「http 500Internal Server Error」になります原因は何でしょうか。 サーバー会社に問合せもホームページ制作会社のPHPやCGIの記述に問題が無いか、 探って頂くしか解決方法はありません。と返答。 原因をネット調べ下記のURL方法で試しましたが、ダメでした。教えてください。お願いします。 URL: http://wancodaisuki.sblo.jp/category/1274778-1.html

  • 500 Internal Server Error

    http://iboard3.to/ で始まるURLのどのサイトでも 500 Internal Server Error Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, info@iboard2.to and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log. と表示され、見ることができません。 どうしたらよいですか?

専門家に質問してみよう