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

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

A 回答 (11件中1~10件)

phpは、本来


#!/usr/local/bin/php
という記載は不要です。

拡張子を abc.cgi から abc.php とすれば、1行目がなくても動きます。

仮に
#!/usr/local/bin/php
を入れたままにすると、自宅サーバーでは動くが、レンタルサーバーでは
動かない、という事が起こり得ますので、やめるのが得策です。

この回答への補足

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

補足日時:2009/05/22 11:07
    • good
    • 0

>まずは説明から


>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版(コマンドライン版)もパスを通せばコマンドコマンドプロンプト側で問題なく使える。
    • good
    • 0

>> 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の拡張子で動きます。
    • good
    • 0

ソースコードを拝見したところ、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さんの自宅サーバではそのような記述は必要ないと思います。
    • good
    • 0

>> XAMPPで自宅サーバー勉強中です


サーバーの環境を明示しましょう

XAMPPには以下の4種類が有りますので、これ開示しないと
適切な回答は得られないでしょう。

XAMPP for Linux
XAMPP for Windows
XAMPP for Mac OS X
XAMPP for Solaris

この回答への補足

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

補足日時:2009/05/22 20:11
    • good
    • 0

>HTMLの中にperl文をいれています、


だったら板違いだし
>#!/usr/local/bin/php
なんていう事をすることが意味不明。

この回答への補足

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

補足日時:2009/05/22 19:27
    • good
    • 0

回答#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. …

上記のURLにPHPをCGI版としてApacheで利用する場合の httpd.conf の記述例が記載されています。

この回答への補足

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

補足日時:2009/05/22 17:50
    • good
    • 0

>HTMLファイルの中にCGIが入っています


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

では、ちょっと逃げ気味ですが



#!/usr/local/bin/php



#!C:\xampp\php\php.exe

等にしてみてください。

C:\xampp\php\php.exe

はphp.exeが置いてあるフォルダのパスです。
    • good
    • 0

>記載は不要でいご来ませんでした


>phpの中にCGIが入っています

phpのファイルの中に、別のCGIが入っているということでしょうか?

例えば、以下のようなファイルを作って、hello.phpとして保存し、見てみると動きますか?
//------ここから(この行は不要)--------
<?php
echo "hello";
?>
//------ここまで(この行は不要)--------

この回答への補足

回答ありがとうございます
>phpのファイルの中に、別のCGIが入っているということでしょうか?
HTMLファイルの中にCGIが入っています
レンタルサーバーの時は動いていました、

>以下のようなファイルを作って、hello.phpとして保存し、見てみると動きますか?
動きます、

よろしくお願いします。

補足日時:2009/05/22 12:16
    • good
    • 0

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

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

Qシェルスクリプトからphpファイルを実行する方法

phpのカテゴリなのか迷いましたが、質問させて下さい。


実行するファイルは、a.php、b.php、c.phpの3ファイルになり、SQL文が記載されています。
この3ファイルを.sh(シェルスクリプト)から実行したいと考えております。
どなたか参考サイトまたは実装方法をご教示頂けないでしょうか。

よろしくお願いいたします。

Aベストアンサー

php a.php
php b.php
php c.php

こんな感じ?

参考URL:http://manual.xwd.jp/features.commandline.html

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の後に{がないようですが、大丈夫でしょうか?

Q#!/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>」の場合はどこに記述するのでしょうか?

初心者的な質問ですみませんが、よろしくお願いします。

Aベストアンサー

>1行目に書いたら、この「#!/usr/bin/php」という記述がブラウザに表示されてしまいました。
ということなら#!/usr/bin/phpの記述そのものが不要ということですね
phpをcgiとして動かすときに必要ということでしょうか
hoge.phpをhoge.cgiのファイル名で実行する場合その1行目に#!/usr/bin/phpが必要になります。
cgiの場合は実行権や改行コードに注意が必要となります。

Q文字列から、特定の文字を削除したい

アンケートで入力された値を受け取り、メールで送信しているのですが、受け取った値から、特定の文字列を削除することは可能でしょうか?

例えば電話番号の入力の場合、
03-xxxx-xxxx →03xxxxxxxx
077-xxx-xxxx →077xxxxxxx
のように、-(ハイフン)が入力されていたら、-を削除した文字列に置換してメール送信したいのです。
入力する時に、3つのテキストエリアに分けるのは諸事情でできないので、特定の文字を削除する関数か処理方法がありましたら、教えていただきたいです。
よろしくお願いします。

Aベストアンサー

str_replace
http://itbtech.itboost.co.jp/man/php_man/function.str-replace.html

<?php
$orig_telno = "03-xxxx-xxxx";

$telno = str_replace("-", "", $orig_telno);
echo $telno;

03xxxxxxxx

“PHP 文字列” あたりをキーワードに検索すれば
そんなに難しいものでもないような。

Qforeachで回った数を表示したい

単純な質問ですみません。
====
//getTestlistは別ファイルで定義済み。
<?
$testlist=getTestlist();
foreach($testlist as $test){
?>


<? } ?>
====
例えば↑こんなふうにforeachで$testlistが存在するだけ回したとします。
そのときに何回まわったか?($testが何件あったか?)だけを表示したいのですが、そんなことってできますか?
表示したい位置は<? } ?>の外側にと考えています。
あさってな質問でしたらすみません。
phpVer 4.3

よろしくお願いいたします。

Aベストアンサー

<?
$testlist=getTestlist();
$n=0;
foreach($testlist as $test){
$n++;
?>
<?}?>

<?=$n?>回
とかでよいかと思います。

途中でbreakなどが無ければ
<? echo count($testlist) ?>でも良いかも知れません。

Q宜しくお願いします。

宜しくお願いします。
mix~max値の間、発行したクエリーからの値を配列に入れたいのですが、どうもFor文中にmin,max値は届いているのですが,$resultに値が入りません。
エラーからしてSQLで行っている変数処理に$iの値が届いてない感じがするのですが、下記のソースを見て頂いて、疑わしき点などご指摘、ご教授いただけませんでしょうか。

どうぞ宜しくお願いします。


--エラー文ここから--->
Catchable fatal error: Object of class stdClass could not be converted to string in ...




--ソースここから--->

$min = h($r -> x);
$max = h($s -> y);
for($i=$min ; $i<= $max; $i++){
$search = sprintf("SELECT id FROM Sheet WHERE no='%d'",$i);
$q_search = mysql_query($search);
$result = mysql_fetch_object($q_search);
echo $result;
}

宜しくお願いします。
mix~max値の間、発行したクエリーからの値を配列に入れたいのですが、どうもFor文中にmin,max値は届いているのですが,$resultに値が入りません。
エラーからしてSQLで行っている変数処理に$iの値が届いてない感じがするのですが、下記のソースを見て頂いて、疑わしき点などご指摘、ご教授いただけませんでしょうか。

どうぞ宜しくお願いします。


--エラー文ここから--->
Catchable fatal error: Object of class stdClass could not be converted to string in ...




--ソースここから...続きを読む

Aベストアンサー

PHPあまり詳しくないので間違っていたらすいません。


>$result = mysql_fetch_object($q_search);
でresultはobject型で代入しておりそれを表示するときにString型に変換できていないのが原因かとおもわれます。

参考URL
mysql-query
http://php.net/manual/ja/function.mysql-query.php

mysql-fetch-array
http://php.net/manual/ja/function.mysql-fetch-array.php

mysql_fetch_object
http://phpspot.net/php/man/php/function.mysql-fetch-object.html

QPermission denied in

PHPを実行するとWarning: fopen failed to open stream Permission denied inと
表示されてしまいます。
インターネットを使い、調べてはいますが、
上記のように表示してしまいます。
ファイルです。パーミッションは606にしました。

このWarningを表示させないようにするには、どのようにすれば
良いのか教えて頂けると嬉しいです。

Aベストアンサー

あとは
> PHPを実行するユーザーとそのグループはどうなってますか?

PHPを直接コマンドラインから実行するのなら、ユーザーはあなたですが、httpサーバーでモジュールやCGIとして実行するなら別の権限(nobodyとか)になっていると思います。

あとは
ディレクトリのパーミッションを 707 にする
ディレクトリとファイルのオーナーをPHPを実行するユーザーにする
とかでしょうか。

QPHPで偶数と奇数を判断するには

宜しくお願いします。
一覧表示等をする時に見やすいように一行ずつテーブルの色を変えたりすると思うのですが、これをPHPのfor文で自動的に交互に色を変えるようなプログラムを作ろうと思っております。for文で繰り返し処理場合、例えば、

for($n = 0; $n < 100; $n++)
{
 if($n = 偶数)
 {
 $bgcolor = "#ff0000";
 }
 elseif($n = 奇数)
 {
 $bgcolor = "#0000ff";
 }
}

といった形で交互に色を変るには、偶数/奇数の判断が出来ないと無理だと思うのですが、何か良い方法は無いでしょうか?

Aベストアンサー

if($n % 2 == 0) {
 偶数の処理;
} else {
 奇数の処理;
}

%は、割り算をした、余りです。
例)
3を2で割った余りは1
4を2で割った余りは0 

ANDで求める方法もあります。

またこの場合は、一度偶数で判定すれば、奇数の判定は不要です。

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

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

Aベストアンサー

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


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報