質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.76%

  • PHP

    19189questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • HTML5

    3724questions

    HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP Notice: Use of undefined constant エラー

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 614

s.kono

score 6

Noticeエラーを解消出来ないでいます。
単純なクォーテーション等スペルエラーなのかもしれませんが、自分では何が悪いのか分かりません、お気づきのことがありましたら教えて下さい。

初回読込時のみNoticeになっているような気もするのですがそんなケースはありますでしょうか?

動作的にはBootstrapもjQueryも正常に動いています。
PHP Ver5.3.3

よろしくお願いします。

※本当のパスを「path」に変更しています。
PHP Notice:  Use of undefined constant JQUERY_PATH - assumed 'JQUERY_PATH' in /path/V_Header.php on line 8, referer:
PHP Notice:  Use of undefined constant BOOTSTRAP_PATH - assumed 'BOOTSTRAP_PATH' in /path/V_Header.php on line 9, referer:

T_Sample.php

require_once __DIR__ .'/../D_Authorize.php';


D_Authorize.php

require_once __DIR__ . "/../../autoload.php";
require_once __DIR__."/../common/D_DefineConst.php";
require_once __DIR__ .'/V_Header.php';


D_DefineConst.php

define("BOOTSTRAP_PATH","/vendor/twbs/bootstrap/dist/css/bootstrap.min.css");
define("JQUERY_PATH","/vendor/components/jquery/jquery.min.js");


V_Header.php

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>データベース </title>
    <script src="<?php echo JQUERY_PATH ?>" /></script>
    <link rel="stylesheet" href=<?php echo BOOTSTRAP_PATH ?>  />
  </head>
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • mts10806

    2018/01/19 10:15

    ブラウザで出力されたHTMLソースにはそれぞれ想定の値が入っているということですか?

    キャンセル

  • mts10806

    2018/01/19 10:16

    require_once→requireに変更した場合の動作も教えてください。

    キャンセル

  • s.kono

    2018/01/19 11:03

    ブラウザのソースを見る限り値は正しく入っています。requireは試してみます。そういえば同じコードで開発用のサーバーでは出ていません。

    キャンセル

  • s.kono

    2018/01/19 11:15

    エラーが出ているサーバーではログに出力させているのですが、出ていないサーバーでは画面に出力させています。画面に出るタミングでないだけかもしれませんね、、

    キャンセル

回答 2

check解決した方法

0

access logからエラーが出ている同時刻にいつもアクセスされているファイルがあることが分かりました。中身は以下です。

<?php
session_start();
error_reporting(E_ALL);

?>
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>タイトル</title>
  </head>
  <body>
<?php

print('<p>ログアウトします</p>');

// セッション変数を全て解除する
$_SESSION = array();

if (ini_get("session.use_cookies")) {
    $params = session_get_cookie_params();
    setcookie(session_name(), '', time() - 42000,
        $params["path"], $params["domain"],
        $params["secure"], $params["httponly"]
    );
}

// 最終的に、セッションを破壊する
session_destroy();

print('</body></html>');


これが呼ばれた時刻にエラーが出ていることから何らかの影響を与えているのはこの処理であるということが分かりました。なぜかはまだ分かりませんがどちらにしても、このログアウト処理は実際にはログアウトできないことも分かっているのでメニューから外すことでおそらくエラーは出なくなると思われます。確認は明日以降になります。

ご回答いただいた皆様ありがとうございました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

流れが見えにくいので整理すると

a.php、b.php、c.php、d.phpの4つあるとして

  1. a.phpからはb.phpをよび
  2. b.phpからc.php、d.phpを順番に呼んでいる。
  3. c.phpで定義した定数をd.phpが利用しようとするとnoticeが出る

という流れでしょうか?
同じような流れで書いてみましたがとくに問題はでないようです

まさかとは思いますが
D_DefineConst.phpはホントはきちんと「<?PHP」から書いていますよね?
書いてなければdefine文が表示されるので気づくとは思いますが・・・

 ソース

念のため上記をソースに起こしておきます
以下で数値「1」が表示されますか?
問題なければ、同じ流れでご自身のソースもチェックしてみて下さい

  • a.php
<?PHP
require_once "b.php";
?>
  • b.php
<?PHP
require_once "c.php";
require_once "d.php";
?>
  • c.php
<?PHP
define("x","1");
?>
  • d.php
<?PHP
print x;
?>

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/01/19 10:54

    ご回答ありがとうございます。
    整理されていただいたとおりです。
    D_DefineConst.phpは「<?PHP」から書いています。
    V_Header.phpにも念のために
    <?php
    ?>
    を頭に入れて試してみましたが変わりませんでした。

    キャンセル

  • 2018/01/19 13:31

    試してみました。a.phpからでもb.phpからでも1と表示されました。
    エラーも出ていません。という事は構造の流れ的には問題がないことになりますでしょうか。本体のコードでエラーが出る時と出ないとの違いについてもう一度検証しなおしたいと思います。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.76%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    19189questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • HTML5

    3724questions

    HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。