• ベストアンサー

#!/usr/local/bin/php

XAMPPで自宅サーバー勉強中です、 レンタルサーバーの時はPHPファイルの1行目に #!/usr/local/bin/php と記入し拡張子をabc.cgiとしていました、 自宅サーバーの場合の1行目と拡張子はどのように 書くのですか、よろしくお願いします。

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

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

  • ベストアンサー
  • tongoko
  • ベストアンサー率87% (7/8)
回答No.2

phpは、本来 #!/usr/local/bin/php という記載は不要です。 拡張子を abc.cgi から abc.php とすれば、1行目がなくても動きます。 仮に #!/usr/local/bin/php を入れたままにすると、自宅サーバーでは動くが、レンタルサーバーでは 動かない、という事が起こり得ますので、やめるのが得策です。

hana3090
質問者

補足

回答ありがとうございます 記載は不要でいご来ませんでした phpの中にCGIが入っています 自宅サーバーでは動くようにしたいのですが よろしくお願いします。

その他の回答 (10)

  • tom951
  • ベストアンサー率30% (29/96)
回答No.11

>まずは説明から >PHPには、CLI版とCGI版が有ります。 >#!/usr/local/bin/php は、LINUXなどのUNIX系OSにて >その後のスクリプトをどのシェル(または言語コマンド)で実行するか >を指定するためのものです。 >上記の記載は、OSに対してCLI版のphpの実行を指定しています >御利用のレンタルサーバーはUNIX系OS上でCLI版のPHPを使用していることになります。 CGIとサーバのモジュールが理解できてない方のようですね。 で >WindowsのXAMPPではCGI版でしかWEBからは起動できません。 Windows版のXAMPPでデフォルトでインストールされているのは モジュール版。 さらにはCLI版(コマンドライン版)もパスを通せばコマンドコマンドプロンプト側で問題なく使える。

  • mpx
  • ベストアンサー率71% (149/209)
回答No.10

>> XAMPP for Windows です まずは説明から PHPには、CLI版とCGI版が有ります。 #!/usr/local/bin/php は、LINUXなどのUNIX系OSにて その後のスクリプトをどのシェル(または言語コマンド)で実行するか を指定するためのものです。 上記の記載は、OSに対してCLI版のphpの実行を指定しています 御利用のレンタルサーバーはUNIX系OS上でCLI版のPHPを使用していることになります。 WindowsのXAMPPではCGI版でしかWEBからは起動できません。 CGI版は、拡張子だけでスクリプト言語を判定します。 apacheのhttpd.conf内に有る下記ディレクティブでphpを実行するファイルの拡張子を設定します。   AddType application/x-httpd-php .php デフォルトでは、上記の様に.phpでしょう。 旧バージョンでは .php4になっている場合も有ります。 そこで回答 >> 自宅サーバーの場合の1行目と拡張子はどのように書くのですか 御利用の環境はCGI版なので 1行目は、不要です 拡張子は、httpd.confのAddType application/x-httpd-php で確認してそこの書いてある拡張子を使います。無い場合は AddType application/x-httpd-php .php を追加しましょう。そうすればphpの拡張子で動きます。

  • x_jouet_x
  • ベストアンサー率68% (162/236)
回答No.9

ソースコードを拝見したところ、PHPのみ記述されていますね。 <?php ~ ?> の部分がPHPのコードになります。 ご存知かも知れませんが、PHPは <?php $name = "hogehoge"; print "<html>"; print "<body>"; print "Hello, $name"; print "</body>"; print "</html>"; ?> のように、全てをPHPで記述する方法と <html> <body> <?php $name = "hogehoge"; print "Hello, $name"; ?> </body> </html> のように、HTMLの一部にPHPを記述する方法があります。どちらも拡張子は .php にするのが一般的で、もちろんどちらも同じ動作をします。 hana3090さんの場合は後者の記述をしていますね。 また一部のレンタルサーバではPHPの1行目に #!/usr/local/bin/php を記述しなければいけないことは私も調べてみて分かりました。 しかし、hana3090さんの自宅サーバではそのような記述は必要ないと思います。

  • mpx
  • ベストアンサー率71% (149/209)
回答No.8

>> XAMPPで自宅サーバー勉強中です サーバーの環境を明示しましょう XAMPPには以下の4種類が有りますので、これ開示しないと 適切な回答は得られないでしょう。 XAMPP for Linux XAMPP for Windows XAMPP for Mac OS X XAMPP for Solaris

hana3090
質問者

補足

XAMPP for Windows です よろしくお願いします。

  • tom951
  • ベストアンサー率30% (29/96)
回答No.7

>HTMLの中にperl文をいれています、 だったら板違いだし >#!/usr/local/bin/php なんていう事をすることが意味不明。

hana3090
質問者

補足

すみませんphp文でした レンタルサーバーの時のコードです #!/usr/local/bin/php <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML lang="ja"> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=Shift_JIS"> <STYLE type="text/css"> <-- A {text-decoration: none;} A:LINK {text-decoration: none; color: wwhite; font-weight: bold;} A:VISITED {text-decoration: none; color: white; font-weight: bold;} A:HOVER {text-decoration: underline; color: red; font-weight: bold;} HTML {cursor:url(./okappa61.cur);} .x14font { mso-style-parent:style0; font-size:18.0pt; font-family:HG丸ゴシックM-PRO, monospace; mso-font-charset:128; } --> </STYLE> <TITLE>リンク</TITLE> </HEAD> <SCRIPT LANGUAGE="JavaScript"><!-- var no = 0; function back() { document.body.background="./kabe/p"+no+".jpg"; no++; if(no >=10) { no = 0; } window.setTimeout("back()", 6000); } //--></SCRIPT> <?php print "<body background=\"./kabe/$kabegami\" link=\"#ffccff\" text=\"#ffffff\" vLink=\"#ffffcc\">\n"; ?> <CENTER><?php ######### print "<FONT SIZE=\"5\" COLOR=\"RED\"><A HREF=\"http://web.infoseek.co.jp/\">★★★★★★</A></FONT><BR><BR>\n"; ######### $stock = array ( "http://www.forum"=>"月月月月☆☆☆☆☆", "http://www.jp/~oneenew/main.html"=>"月月☆☆☆☆☆", "http://ch/bbs1/"=>"月月☆☆☆☆", "http://miwaku.web.infoseek.co.jp/"=>"月月楽部"); $kaisuu = 0; foreach($stock as $key => $value) { $kaisuu++; if($kaisuu == 1) { $iro = "#000080"; $iti = "left"; } elseif($kaisuu == 2) { $iro = "#000000"; $iti = "center"; } else { $iro = "#0000FF"; $kaisuu = 0; $iti = "right"; } print "<TABLE BGCOLOR=\"#FF0000\" BORDER=\"0\" WIDTH=\"30%\" cellpadding=\"0\" cellspacing=\"1\" align=\"$iti\">\n"; print "<TR><TD HEIGHT=\"30\" align=\"center\" BGCOLOR=\"$iro\"><A HREF=\"{$key}\" TARGET=\"_blank\">{$value}</A></TD></TR>\n"; } $s = date("s",time()); foreach($stock as $key => $value) { $k++; if($k == $s) { print "<TR><TD HEIGHT=\"30\" align=\"center\" BGCOLOR=\"#FFFFFF\"></TD></TR>\n"; print "<TR><TD HEIGHT=\"30\" align=\"center\" BGCOLOR=\"$iro\"><A HREF=\"{$key}\" TARGET=\"_blank\">ランダムリンクno{$k}</A></TD></TR>\n"; break; } } print "</TABLE>\n"; ?> </CENTER></BODY> </HTML> よろしくお願いします。

  • x_jouet_x
  • ベストアンサー率68% (162/236)
回答No.6

回答#1をしたx_jouet_xです。 私の早合点(perlと勘違い)で誤った回答をしてしまいました。申し訳ないです。 回答#2および#5の方が説明されている通りです。 XAMPPを使用されているのであれば、PHPであれば <?php ..... ?> のように記述した *.php ファイルを\xampp\htdocs配下に置けば動作すると思います。 一般的なサーバ環境ではApacheとPHPをインストールすると、Apacheの設定ファイル(httpd.conf)が書き換えられてPHPをCGIモードで動作させる場合でもPHPファイルの1行目に #!..... の記述は必要なくなるような設定になるはずです。 hana3090さんが使用されているレンタルサーバは httpd.conf で別の設定がされているのだと思います。 http://memorandum.kurashian.com/2009/03/post-13.html 上記のURLにPHPをCGI版としてApacheで利用する場合の httpd.conf の記述例が記載されています。

hana3090
質問者

補足

すみません HTMLの中にperl文をいれています、 よろしくお願いします。

  • tom951
  • ベストアンサー率30% (29/96)
回答No.5

>HTMLファイルの中にCGIが入っています そもそもcgiは言語ではなくてシステムの事です。 PHPの場合、CGIモードで動かせばCGIとして動き Webサーバのモジュールとして動かせばモジュールとして動きその場合はCGIではありません。 ですから >phpの中にCGIが入っています なんて状態は起きません。

  • tongoko
  • ベストアンサー率87% (7/8)
回答No.4

では、ちょっと逃げ気味ですが #!/usr/local/bin/php を #!C:\xampp\php\php.exe 等にしてみてください。 C:\xampp\php\php.exe はphp.exeが置いてあるフォルダのパスです。

  • tongoko
  • ベストアンサー率87% (7/8)
回答No.3

>記載は不要でいご来ませんでした >phpの中にCGIが入っています phpのファイルの中に、別のCGIが入っているということでしょうか? 例えば、以下のようなファイルを作って、hello.phpとして保存し、見てみると動きますか? //------ここから(この行は不要)-------- <?php echo "hello"; ?> //------ここまで(この行は不要)--------

hana3090
質問者

補足

回答ありがとうございます >phpのファイルの中に、別のCGIが入っているということでしょうか? HTMLファイルの中にCGIが入っています レンタルサーバーの時は動いていました、 >以下のようなファイルを作って、hello.phpとして保存し、見てみると動きますか? 動きます、 よろしくお願いします。

  • x_jouet_x
  • ベストアンサー率68% (162/236)
回答No.1

まずコマンドから which php と入力して下さい。 これでphpコマンドのフルパスを取得できます。 (たいていは、/usr/bin/php か /usr/local/bin/php だと思います。) PHPファイルの1行目には、 #!「phpコマンドのフルパス」 と記述します。 また拡張子ですが、*.cgi でもいいと思いますが、これはPHPをCGIモードで動作させる場合に使用することが多いと思いますので、普通に *.php でいいと思います。

hana3090
質問者

補足

回答ありがとうございます コマンドプロンプトに which php と入力しても エラーになります、 phpの中にCGIが入っています よろしくお願いします。

関連するQ&A

  • #!/usr/local/bin/phpはどこに書くのですか?

    phpでWebページを作っています。 レンタルサーバーのマニュアルに「PHPで記述したCGIスクリプトの1行目に #!/usr/bin/phpまたは #!/usr/local/bin/phpと記述して下さい。 」とありますが、hoge.phpの「<?php ~ ?>」の「<?php」の次の行に書くのでしょうか?それとも前の行に書くのでしょうか? また、hoge.phpの中身が「<html><head></head><body> ~ <?php ~ ?> ~ </body></html>」の場合はどこに記述するのでしょうか? 初心者的な質問ですみませんが、よろしくお願いします。

    • ベストアンサー
    • PHP
  • #!/usr/local/bin/perlの変更。

    ┬ cgi_script │   └***.cgi │ └ access_g     └11111       └22222         └***.cgi 今まで、cgi_scriptフォルダの直下にあるcgiファイルの一番上の行は #!/usr/local/bin/perl できちんと動作していました。 今は、そのcgi_scriptフォルダと同じところにあるaccess_gフォルダの中にある、 11111フォルダの下の2222フォルダの下にあるcgiファイルを実行させたいのですが、 #!/usr/local/bin/perl をどのように変更していいかわからなくなってしまいました。 動作させたいcgiファイルはcgi_scriptフォルダの中に入れたところきちんと動作したので、 動作上の問題はないと思われます。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • CGI
  • 「#!/usr/bin/perl --」でなければ動作しないのはなぜ?

    新しい職場に来て、あるCGIの設定を依頼されたのですが、どのような設定になっているのか、どのプログラムをアップしても「Internal Server Error」になってしまいました。 人に聞いて、「#!/usr/bin/perl」を「#!/usr/bin/perl --」としなければ動かないことまでは分かりました。 確かに、先に他の方が作成されたらしいCGIプログラム(単純な構成のものばかりです)ではすべて「#!/usr/bin/perl --」となってました。 こうしなければ、どんな簡単なプログラムでも絶対に動かないようです。 「*.cgi」というファイルが1つのみ(他の構成ファイルは他の形式)というプログラムならその方法で動いたのですが、複数の「*.cgi」ファイルで構成されているものはどうしても動きませんでした。 構成するファイルの中に、先頭に「#!/usr/bin/perl」の行がないファイルもあるのですが、もしかしてそのせいでしょうか? その場合、どうしたら解決できますか? そもそも何が原因なのでしょう? 今まで、色々な会社でCGIをいじってきましたが、初めての経験で戸惑っています。 FFFTPの設定(開業など)の問題ではないように思えるのですが、サーバーの設定がおかしいのでしょうか? 「#!/usr/bin/perl --」としなければ絶対に動かないというのは、どういう場合に起こる現象なのですか?

    • 締切済み
    • CGI
  • #!/usr/local/bin/perlとしたい

    WindowsXP上でCGIを動作させる環境を構築しています。 しかし、サーバにアップロードする際にいちいちPerlパスを変更するのが 面倒なので、「#!/usr/local/bin/perl」と、基本的なディレクトリ指定にしたいです。 (サーバそうでなければ結局指定し直しですが) 現在、「#!c:/perl/bin/Perl」で動かしています。 どうすれば出来るでしょうか?ご教示願います。 ちなみにApacheは2.0.55です。

    • 締切済み
    • CGI
  • CGIタイプのPHPとは・・・?

    PHPのCGIタイプとはどのようなものなのでしょうか? 借りているレンタルサーバーで普段はxxx.php(xxxはファイル名) として使用していますが、このバージョンがphp4.2.2なのです。 それで、php5のコマンドを使用する必要性が出てきたのですが、当然、xxx.phpでは使用できません。 が、レンタルサーバーのマニュアルに、 「PHP5はCGIタイプで使用できます。SSIタイプではPHP4となります。PHP5をご利用の場合、PHP5で記述したスクリプトの一行目に#!/usr/bin/php5 または #!/usr/local/bin/php5 と記述して下さい。CGIタイプのPHPの場合、拡張子はCGIに準じます。」 とあります。 質問 1.このCGIタイプのPHPとは、拡張子が.cgiというだけで中身がphpの記述なのでしょうか?(しかし1行目に記述する#!/usr/bin/php5の記述はperlのような気もします)。 もしくはPHP5を利用したい場合はperlで記述するということでしょうか(意味不明ですが)?? 2.あと後学のために教えてほしいのですが、私が普段使用している.phpはSSIタイプとのことですが、マニュアルに 「SSIタイプのPHPの場合PHPファイルの拡張子を.phpまたは.php4にして下さい。これらの拡張子のファイルだけがPHPファイルとして処理されます。また、拡張子が「.phps」のファイルは、phpソースとして処理されます。」 とあります。これはhtmlコードの中に<?php~?>を記述できるからSSIタイプと言っているのでしょうか?(私は普段はphpコードでhtmlを生成しています)。 あと、phpソースとはどのような処理のことを言うのですか? 初心者的な質問ばかりですみません。どうしてもPHP5を利用したいのでお教えいただければと思います。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • CGI版PHP?

    よろしくお願いします 現在ローカルで Windows2000+Apache2+php4のPHPの実行可能環境を構築しています ところが、現在使用しているサーバーの1つが CGI版PHPというのかどうかわかりませんが 拡張子を.cgiにして1行目に #!/usr/local/bin/php-cgi-4.3.11 などを書いてPHPを実行する方法をとっています これだと、ローカルで構築したあとに拡張子を変えて リンクを変えて・・・と面倒なので 拡張子がphpでもcgiでも実行できる環境を構築できないかと思い 質問させていただきました 参考になるホームページなどがありましたら教えていただけないでしょうか?

  • /usr/local/bin/rubyを実行するには

    OSはFedora10を使っています。 /usr/local にRubyを展開し、以下のコマンドを入力しインストールしました。 cd /usr/local/ruby ./configure make make test sudo make install /usr/local/bin にrubyの実行ファイルがあるようなのですが、bashは /usr/bin を探索し、rubyが存在しないといいます。 /usr/local/bin/ruby が実行されるようにするにはどうすれば良いか教えて頂けないでしょうか。よろしくお願いします。

  • ActivePerlで#!/usr/bin/が無効

    WindowsXPにActivePerl(5.16.3.1603)をインストールして、 コマンドラインに「perl script.scr」と入力して スクリプトファイルは実行できるのですが、 スクリプトファイルの1行目に「#!/usr/bin/perl」を記述して、 コマンドラインに「script.scr」と入力して実行しようとすると、 「C:\・・・\script.scrは有効なWin32アプリケーションではありません。」 というメッセージが表示されて正しく実行できません。 perl.exeのあるフォルダをC:\usr\binフォルダにして、 1行目を #!/usr/bin/perl #!C:/usr/bin/perl #!C:\usr\bin\perl などいろいろ試してみましたが、どれも 前述のメッセージが表示されて実行できませんでした。 コマンドラインに「script.scr」と入力するだけで 実行することができるようにするには どのようにすればいいのでしょうか。 script.scrの拡張子scrをplなどに変更して この拡張子のファイルに対してperl.exeに関連付けることにより script.plだけでも実行できるようにはなりますが 拡張子.scrではこの関連付けができませんので #!/usr/bin/perl等を使用する方法で解決したいです。 ジャンクションとかApacheなどが全く分かりませんので これらを使わずに簡単にできる方法がありましたら教えてください。 (なお使っても分かりやすい手順があれば可です) よろしくお願いします。

    • ベストアンサー
    • Perl
  • #!/usr/local/bin/perlで命令が出せません。

    プログラミングのド素人で、独学でwindows上でcygwinを使っている者から質問させていただきます。「#!/usr/local/bin/perl」というコマンドをプログラムの先頭に書いて、[ファイル名]を入力してcygwinで命令をしたところ、命令が実行できず、「commond not found」と出てしまいました。そこで、ネット上で、いろいろ調べて、試してみたのですが、どうしても、解決できません。 どなたか、アドバイスをいただけないでしょうか? ちなみに、perl [ファイル名]では、命令を実行することができます。「type -a perl」というコマンドを入力すると、「/cygdrive/c/Perl/bin/perl」というのがでてきたので、「#!/cygdrive/c/Perl/bin/perl」というコマンドを書いても上手くいきませんでした。 ちなみに、私が書いたプログラムは、以下のようなものです。 #!/cygdrive/c/Perl/bin/perl (あるいは#!/usr/local/bin/perl) # hello -- 挨拶のプログラム print ("hello");

    • ベストアンサー
    • Perl
  • php4とphp5の混在 .iniファイルは?

    Linuxにphp4とphp5を動作させたいのですが、現在php4が入っていまし てphp5をインストールする際はyumを使えば良いのでしょうか? iniファイルなど共通するはどうなるのでしょうか? また、混在させるとcgiで動作させる必要?があると思うので .phpファイルをcgiで動作させる方法も知りたいです。 /usr/local/bin/php (PHP5) /usr/bin/php (PHP4) とするのが一般的でしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう