こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPのインクルードの方法(初心者です)

サイトの管理を一括で行いたいと思い、
いろいろ調べたところPHPのインクルードという方法を知りました。

いろいろなサイトを見て、その通りに実行してみたのですが、
500エラーになってしまいます(泣)

やってみたのは以下の通りです。

1、「.html」なので「.htaccess」というファイルに
AddType application/x-httpd-php .htm .html
と記述してアップロード。

2、インクルードしたい部分をメモ帳に貼り付け、「●●.txt」で保存しアップロード。

3、メモ帳にコピペした部分を削除して、
<?php include_once("http://●●.com/▲▲.txt"); ?>
と記述。


以上です。

詳しくわからないのですが、何階層にもなりそうなので
相対パスなら、いちいち指定するのに手間が掛かるので
絶対パスというので指定したいのですが、
「PERLの絶対パス」とか意味がわかりません(汗)

3のようにURLで指定するのは間違っているのでしょうか?

いろいろいじってみたのですが、
一体どこがおかしいのかわかりません。
どなたかご教授お願いいたします。

投稿日時 - 2009-08-10 16:54:00

QNo.5196593

困ってます

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

> 早速、<?php include_once("upload/▲▲.txt"); ?>に
> 書き直してみたのですが、やはり500エラーになってしまいます。
まず、IISなりApacheなりにPHPをインストールしていると思われますが、
InternalServerErrorが発生しているとなると、PHPとしてモジュールが動作しているか確認の為、
test.php というファイルを作り、
<?php phpinfo(); ?>
でインストールしているPHPが動作しているかまず確認をしてみてください。

> 以下のサイトを参考して、その通りにやってみたのですが、
> 全然うまくいかなかったものですから…。
> http://seo.k-m-k-m.com/hp/include/
> この他にやらなければいけないことはあるでしょうか?
上記を目的とするのでしたら、(/usr/local/apache/webroot/upload/▲▲.txtにファイルがあるとして)
<?php
$filename = "/usr/local/apache/webroot/upload/▲▲.txt";
$fd = fopen( $filename,"rb" );
if( $fd == FALSE ){
printf( "file open error [%s]",$filename );
exit;
}
fseek( $fd,0,SEEK_END );
$filesize = ftell( $fd );
fseek( $fd,0,SEEK_SET );
$body = fread( $fd,$filesize );
fclose( $fd );
printf( "%s",$body );
?>
としてファイルを読み出してprintf()するのが手っ取り早いと思われます。

include()やinclude_once()はphpのプログラムや定義を読み込むもので、
文章(HTML)などを読み込むには適さないです。
▲▲.txt にたとえば
<HTML>
<HEAD><TITLE>タイトル</TITLE></HEAD>
<BODY>内容</BODY>
</HTML>
だったとすると <?php include_once( upload/▲▲.txt ); ?>で展開される結果は

<?php <HTML>
<HEAD><TITLE>タイトル</TITLE></HEAD>
<BODY>内容</BODY>
</HTML> ?>

となりPHPの構文でエラーが出ます。(500エラーにはならないハズですが。。。)
include()やinclude_once()はPHPのプログラムや変数定義をソースに
取り込む物として使ってください。

参考URL:http://www.php.net/manual/ja/

投稿日時 - 2009-08-11 12:15:15

ANo.2

このQ&Aは役に立ちましたか?

6人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

<?php include_once("http://●●.com/▲▲.txt"); ?>
include_once()の引数は相対パスであるべきです。
▲▲.txtファイルはアップロードされるディレクトリにあるのでしょうから、
<?php include_once("upload/▲▲.txt"); ?>
などと相対パスで参照すれば出来ると思います。

ただ、include_once()はPHPのプログラムをインクルードするので、
▲▲.txtは誰でもアップロードできるものである場合サーバーへの不正アクセスのバックドアを作られたり、破壊行為をされる事がありますから、
プログラムをフォーム上からアップロードするのは危険ですので、
FTPなり、SCPなりでアップロードしたほうがよいと思われます。

投稿日時 - 2009-08-10 17:07:13

お礼

アドバイスありがとうございます。

早速、<?php include_once("upload/▲▲.txt"); ?>に
書き直してみたのですが、やはり500エラーになってしまいます。

それと、できれば絶対パスでの指定したいのですが、
その場合、また違った方法じゃなければいけないのでしょうか?


PHPを使う場合、サーバーの設定を変更しなければいけないなどの
特別な操作が必要なのでしょうか?

以下のサイトを参考して、その通りにやってみたのですが、
全然うまくいかなかったものですから…。
http://seo.k-m-k-m.com/hp/include/

この他にやらなければいけないことはあるでしょうか?


それと、現在メモ帳にペーストしてFTPソフトで
アップロードしているのですが、
「.txt」という形式だと危険なのですか?

「▲▲.php」というファイル名で
アップロードした方がいいというでしょうか?

本来の質問とは異なりますが、
初心者なのでそういった知識がないので
そちらも教えていただけると助かります。

質問だらけで専門用語などもわからないため
理解しにくい文章で申し訳ありませんが、
よろしくお願いいたします。

投稿日時 - 2009-08-10 19:21:21

あなたにオススメの質問