require_onceの結果について

このQ&Aのポイント
  • php Ver5.5.28を使用したlinux上でのrequire_onceの結果について
  • index.phpファイルに<!DOCTYPE html>タグとテストタイトルを含んだHTMLコードを記入し、test.phpファイルにaaa変数の設定と表示を記入したが、実行結果のHTMLに不明なコードが追加された
  • test.phpファイルを空のコードで実行しても不明なコードが生成される問題が発生している
回答を見る
  • ベストアンサー

require_once の結果について

linux上でphp Ver5.5.28を使っています。 まず、index.phpは <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>テスト・タイトル</title> </head> <body> <h1>require_onceのテストを行います。</h1> <p><?php require_once("test.php"); ?></p> </body> </html> と記入しています。 test.phpは <?php $aaa = "変数に文字を設定します。"; print $aaa; ?> と記入しています。 実行した結果のHTMLを見ると添付ファイルのとおり不明なコードが追加されています。 また、test.phpを <?php ?> のみでやっても不明なコードが作成されてしまいます。 どなたか、原因が分かる方がいらっしゃれば教えていただけないでしょうか。 よろしくお願いします。 その結果のHTMLを見ると、添付画像のとおりゴミが出力されています。

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

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

  • ベストアンサー
  • 4017B
  • ベストアンサー率73% (1305/1776)
回答No.3

これは典型的な文字コードの問題ですね。PHPなどのプログラム公文には何の問題もありません。 NTTレンタルサーバとの事ですのでサーバ側の設定は事実上、User任意では変更出来ないため、PHPファイルとHTMLファイルの文字コードを何とかして解決するしか方策は無いと思われ…。 恐らくはPHPファイルの改行コードとBOMが引っ掛かってるんではないかと推測。 ・UTF-8, 改行LF, BOM無 ~でPHPを上書き保存し直してみてください。特にBOM有だとよくこの様なゴミが出やすいので。 既に該当ファイルが全てその様になっている場合、サーバ側のキャッシュが残っており最新版のファイル情報が反映されていない可能性もありますので。数時間程度、待ってから確認してみてください。 それでもダメならちょっとお手上げと言うか、実際に弄りながらでないと何とも言えないので…そちら側で直にNNTさんに問い合わせして貰うしかないと思いますが。通常、この手の個別質問にはノーコメントが原則なので…やっぱりもうお手上げかも。

doraemoyan
質問者

お礼

基本的なミスでしたが、PHP側を追いかけ過ぎていました。 本当にありがとうございました。

doraemoyan
質問者

補足

ありがとうございました。 一部ファイルがBOM有りで保存されてることが分かりました。 UTF-8N(TeraPad)で保存し直して解決しました。

その他の回答 (2)

noname#217950
noname#217950
回答No.2

環境が違いますが私がやってるサイトのあるレンタルサーバー上でソースをコピーしてみましたがその黒丸らしきものは出ませんでした。 小さくてよく見えないのですが、多分よくお目にかかる文字化けの時に出る黒いひし形の中に?が入ったやつですよね?最初の一文字目だけですし、本来文字の無い場所ですので私は同様の経験がありません。 setlocale(LC_ALL, 'ja_JP.UTF-8'); をtest.phpの最初に書き加えても駄目ですかね? 文字化けとは違うと思うのですが、私がよくやるおまじないです。。。

doraemoyan
質問者

補足

ありがとうございます。 <?php setlocale(LC_ALL, 'ja_JP.UTF-8'); $aaa = "変数に文字を設定します。"; print $aaa; ?> で試しましたが、文字化けの時に出る黒いひし形の中に?が入ったやつが同じように出てしまいます。ちなみに、サーバはNTTコミュニケーションのBizメール&ウェブ エコノミーを利用しています。

noname#217950
noname#217950
回答No.1

いったいどこがゴミなのですか? 期待通りに出力されてるように見えるのですが。、

doraemoyan
質問者

補足

画像が小さくてすいません。 <p>●変数に文字を設定します。</p> ●が余分に出力されます。 ※バイナリーエディターでコードは調べていませんが、説明の都合上●とさせていただきました。

関連するQ&A

  • require_onceで意図したエラーがでない

    初心者です。教えていただけますか? さくらのレンタルサーバで http://www.sakura.ne.jp/ 存在しないphpファイルをrequire_onceで読み込んだのですがエラーが出ません。 他の無料レンタルサーバーで全く同じファイルをブラウザで開いたら意図した通りにエラーが出ました。 抑制されているのでしょうか? エラーが出る様にするにはどうすれば、良いですか? <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>無題ドキュメント</title> </head> <body> <?php require_once("xxxxx.php"); ?> </body> </html>

    • ベストアンサー
    • PHP
  • require_onceでファイルが開けない!?

    requre_onceでのファイルの読み込みが上手くいかないらしく、次のようなエラー文が出てしまい困っております。 =========エラー文=================== Warning: require_once() [function.require-once]: URL file-access is disabled in the server configuration in C:\xampp\htdocs\wakuphp\girlup_result_kanryou.php on line 6 Warning: require_once(http://waku2work.com/mysql2.php) [function.require-once]: failed to open stream: no suitable wrapper could be found in C:\xampp\htdocs\wakuphp\girlup_result_kanryou.php on line 6 Fatal error: require_once() [function.require]: Failed opening required 'http://waku2work.com/mysql2.php' (include_path='.;C:\xampp\php\pear\') in C:\xampp\htdocs\wakuphp\girlup_result_kanryou.php on line 6 ================================ 問題の6行目のソースコードは以下の通りです。 ======ソースコード6行目================= require_once("http://waku2work.com/mysql2.php"); ================================ この場合、”require_once”が読み込めて無いって事ですよね!? 一応初心者なのですが、気になるのは3つ目のエラー表示で、ローカルのパス表示が出てる点です。 設定がうまくいってないのでしょうか? 有識者の方いらっしゃいましたら、どうか宜しくお願いします!

    • ベストアンサー
    • PHP
  • 別のドメインのファイルをrequire

    phpで別のドメイン下のファイルをrequireしようとしていますがうまくいきません。 サーバーの環境は【Windows Server 2008 + IIS6.0 + php5.2】で、 php.iniのallow_url_includeはonに設定済みです。 ファイルA http://xxx.com/aaa.php   <html>   <head>   </head>   <body>   <?php   require_once("http://localhost/test.inc");   echo $remember;   ?>   </body>   </html> ファイルB http://yyy.com/bbb.php   <?php   $remember=5577;   ?> 仮にファイルAに「require_once("http://yyy.com/bbb.php");」と書いて実行すると、空白のページが出力され、ページのソースは   <html>   <head>   </head>   <body> となっていました。 phpコードを実行するところで処理が中断されたようです。 空白ページのタイトルは「500-内部サーバーエラー」です。 同じサーバーの違うドメインで試しても、物理的に別のサーバーで試しても結果は同じでした。 ネットで調べた限りでは結構みんなすんなりとできたみたいなので、なおさら不思議で仕方がないです。 何が考えられるか、教えていただければと思います。

    • ベストアンサー
    • PHP
  • requireで呼び出したデータを変数に入れるには

    <?php $test = require_once 'date.html'; print "<p>$test</p>"; ?> このソースだと、requireで呼び出したデータを変数に保存できないのですが、 どうすれば変数に保存できますか?

    • ベストアンサー
    • PHP
  • リモートファイルのrequireに関して

    はじめまして、 PHPのマニュアルには 「php.iniでallow_url_fopenを有効にした場合、 パラメータとしてファイル名をとる関数の多くでHTTPおよびFTPのURL を使用することができます。加えて、include(), include_once(), require(), require_once() 命令でURLを使用することができます。」 とあるのですが、requireでリモートファイルを読みこめません PHP のバージョンは 4.1.2 php.iniでallow_url_fopenが有効(On)になっているのは確認しました。 http://www.****1.com/hoge1.php から http://www.****2.com/hoge2.php を呼び出しています。 hoge1.php及びhoge2.phpのソースは以下のとおりです。 ----hoge1.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"> <META http-equiv="Content-Style-Type" content="text/css"> <TITILE></TITILE> </HEAD> <BODY> <?php require ("http://www.****2.com/hoge2.php"); dispword(); ?> </BODY> </HTML> --------------------------------------------------------------------- ----hoge2.php-------------------------------------------------------- <?php function dispword(){ print xyz; } ?> --------------------------------------------------------------------- 実行結果は Fatal error: Call to undefined function: dispword() in ・・略・・****1.php on line 11 となります。 10行目じゃなく11行目にでてるということは、requireできてるんでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ヒアドキュメントとクラスの基本的?な質問です

    PHPのヒアドキュメントを使ってHTMLのクラスを使ろうと思っているのですがいきなりわからなくなってしまいました。下のソースのどこがいけないのでしょうか。 エラー内容は Parse error: parse error, unexpected $end in \Html.php on line 19 です。よろしくお願いします。 index.php <?php require_once("./Html.php"); $html = new Html(); print $html->NoFrame(); ?> Html.php <?php class Html{ function Html(){ } function NoFrame(){ $html = <<<EOF <html> <head> <title> </title> </head> <body> おーい </body> </html> EOF; return $html; } } ?>

    • ベストアンサー
    • PHP
  • requireの使い方のどこがおかしいのでしょう?

    言語はperlです。 789.cgiから456.plを呼び出したいのですが、シンタックスエラーが出てきます。 789.cgiのrequireに関する行をコメントにしたら実行されるのですが…。 requireを使わずに、サブルーチン自体を789.cgiの中に書き込むことには成功しているのですが、 イマイチrequireを使った呼び出しのコツがわかりません。 どなたかご教授下さい。 以下にスクリプトを示しておきます。 よろしくお願いします。 *****以下789.cgi***** #!/usr/local/bin/perl use CGI::Carp qw(fatalsToBrowser); require "456.pl"; $a=12; $b=15; $d="xxxxxxxx"; $d=&plus(); print "content-type:text/html\n\n"; print <<"HTML_HTML"; <html> <head> <title> ヒアドキュメント </title> <body> ***** <br> $d <br> ***** <br> $a <br> ***** <br> $b <br> ***** </body> </html> HTML_HTML ***********以下456.pl************ sub plus { my $a=10; my $b=10; $c=$a+$b; return $c; }

    • ベストアンサー
    • CGI
  • 仮想ドライブにあるソースをrequireするには?

    WindowsでのPHPプログラミングに関する質問です。 コマンドプロンプトで、substを利用して仮想フォルダを作成しました。 ところが、phpプログラムからrequire_once()を使って その仮想フォルダ内のソースを読み込もうとするとエラーとなります。 どうすればこの問題が解決できるでしょうか? require_once()の処理では、substによる仮想フォルダは無視されるのでしょう? よろしくお願いします! 【具体的な内容(一部伏字です)】 ・仮想フォルダ > C:\WINDOWS\system32>subst > H:\: => C:\usr\local\phpdata > C:\WINDOWS\system32>tree /F h:\ > フォルダ パスの一覧: ボリューム IBM_PRELOAD > ボリューム シリアル番号は XXXX-XXXX です > H:\ > └─project1 > xxxx.php ※cat H:\phpdata\project1\xxxx.php ではちゃんとxxxx.phpの内容が表示されます ・require部分のソース require_once('H:/project1/xxxx.php'); ※require_once('C:/usr/local/phpdata/project1/xxxx.php'); なら正常にソースが読み込まれます ・エラーログ PHP Fatal error: require_once() [<a href='function.require'>function.require</a>]: Failed opening required 'h:/project1/xxxx.php' (include_path='.;C:\PHP\pear') in C:\.....\yyyy.php on line 11

    • ベストアンサー
    • PHP
  • PHPからCプログラムを実行して実行結果をHTML上に表示

    PHP初心者です。PHPからCプログラムを実行して実行結果をHTML上に表示する方法が分からなく困っています。 Cプログラムの中身は、 #include <stdio.h> int main(){ printf("Hello."); } です。 phpの中身は、 <HTML> <HEAD><TITLE>Cプログラム呼び出し</TITLE></HEAD> <BODY> <?php $cmd = "test.exe"; $a = exec($cmd); echo $a; ?> </BODY> </HTML> としており、調べてみるとexec()関数で外部プログラムを実行すると書いてあったのでこのように作成しました。

    • ベストアンサー
    • PHP
  • smartyの必要性について

    phpを用いて携帯サイトを作成しています。 phpのみを表記している「a.php」「b.php」「c.php」「d.php」「e.php」があります。 ------------a.php------------- <?php if(~~){ $a[0] = '~~'; }else(~~~~){ $a[0] = '~~~'; } $a[1] = '~~'; $a[2] = '~~~'; ・ ・ ・ $a[n-10] = <<< MESSAGE <h1>{$a[n-25}</h1> <p>テスト表示</p>     ・     ・ <p>{$a[n-15]}</p> MESSAGE; ・ ・ $a[n] = <<< MESSAGE <h1>{$a[n-50}</h1> <p>テスト表示</p>     ・     ・ <p>{$a[n-45]}</p> MESSAGE; ?> ----------------------------------- ------------b.php------------------ <?php if(~~){ $b[0] = '~~'; }else(~~~~){ $b[0] = '~~~'; } $b[1] = '~~'; $b[2] = '~~~'; ・ ・ ・ $b[n] = <<< MESSAGE <h1>{$b[0}</h1> <p>テスト表示</p>     ・     ・ <p>{$b[n-10]}</p> MESSAGE; ?> --------------------------------------- c.php以下の内容もだいたいおなじ内容になっております。 -----------index.php-------------------- <html> <head> <?php include_once 'a.php'; include_once 'b.php'; include_once 'c.php'; include_once 'd.php'; include_once 'e.php'; ?> </head> <body> <?php echo $a[0]; echo $a[n]; echo $b[n-60]; echo $c[n-30]; ?> </body> </html> ----------------------------------------- -----------index1.php------------------- <html> <head> <?php include_once 'a.php'; include_once 'b.php'; include_once 'c.php'; include_once 'd.php'; include_once 'e.php'; ?> </head> <body> <?php echo $a[0]; echo $a[n]; echo $b[n-80]; echo $c[n-3]; ?> </body> </html> ------------------------------------- このような感じでindex.php ~ index[n].phpを作成しております。 index.php ~ index[n].phpは、基本として修正は行なわず a.php ~ e.phpを修正することによって、すべてのページへ 瞬時に反映できるようにして作成しております。 現在、この方法で十分管理はできています。 つぎは、smartyを用いておなじような処理を考えてみました。 ######################## ### smarty使用 #### ######################## ------------index.php開始---------------- <?php require_once 'libs/Smarty.class.php'; $smarty = new Smarty; $smarty->compile_check = true; include_once 'a.php'; include_once 'b.php'; include_once 'c.php'; include_once 'd.php'; include_once 'e.php'; $smarty->assign("a", $a); $smarty->assign("b",$b); $smarty->assign("c",$c); $smarty->display('test.tpl'); ?> ------------------------------------------ ------------index.tpl--------------------- <html> <head> </head> <body> {$a[0]} {$a[n]} {$b[n-60]} {$c[n-30]} </body> </html> --------------------------------------- smartyを使っていないときよりも、smartyを使ったほうが 処理速度が速くなるようでしたらsmartyに乗り換えるのですが Smarty.class.phpを余分に読み込む分、処理速度が速くなって いるとも思えません。 また、index.html ~ index[n].htmlへの記述も大差ないので 可視性やデザイン面でもとくに違和感なく修正できます。 上記の作成方法で、smartyを用いるうえでの可視性の向上以外の利点は ありますでしょうか? また、改善点などございましたら、ご教授いただけると幸いです。

    • 締切済み
    • PHP

専門家に質問してみよう