2012-03-16 14 views
1

私は以前のバージョンのPHP(5.3ではなく)で書かれた小さなコードを持っていますが、通訳者が定数のクロス使用を通知メッセージ通知が報告されているファイルとは異なるファイルに定数が定義されていると、致命的なエラーが発生します。プログラムは別のファイルに定義定数を使用する

define('SOME_CONSTANT','something'); 

やファイル内を開始したとき、例えば、私は、ファイル内の私の定数を定義している初期化され B.php

require_once('A.php'); 
Call-function-that-uses-fileA's-SOME_CONSTANT 

ファイルBは、通知メッセージであり、aと報告されています致命的な誤り。

致命的なエラーが略

するrequire_once()[function.require]として説明することができる:ここで失敗開口必要...

"..." を意味現在のファイルBにはまったく関連していないかもしれない長いパスの含まれたパス。あなたが提供する助けや助言に感謝します。

これは私のコードが古いもので書かれていたのですが、新しいPHPバージョンを使用したことが原因ですか? PHPを再インストールせずにこれらのメッセージを修正するにはどうすればよいですか?

編集

私はPHPを再インストールしたくない唯一の理由は、私が新しいプロジェクトで作業する必要がある時はいつでも常にPHPを変更したくないので、ということです。今は古いかもしれませんが、後で私は最新のバージョンを使用して、新しいものを再ダウンロードし、古い1つのpssを削除する必要がある場合はどうしますか?

+0

B.phpの 'file_exists( 'A.php')'をチェックしてください。 – Ing

+2

A.phpファイルがインタプリタによって見つからなかったということは間違いないと確信しています。 A.phpが正しいパスかどうかをチェックする必要があります。 – Mikhus

+0

ファイルa.phpはどこですか? –

答えて

0
require_once(__DIR___.'/A.php'); 

__DIR__実行ファイルの現在のディレクトリを示します。

2

私はこれだった知っていて、古い問題が、場合には、誰もがそれにつまずきされ...

残念ながらrequire_once('A.php');コールはファイルB.phpと同じディレクトリにあるa.phpファイルを検索します。 A.phpファイルを含める場合は、ファイルへの完全なディレクトリパスを与える必要があります。または、ファイルinclude_pathをの親ディレクトリに含めるようにphp.iniファイルの文字列を変更します。

php.iniファイルを変更したくない場合は、ファイルのフルパスを指定するだけです。

@Binaek:__DIR__マジック変数は、単にB.phpがa.phpファイルがあるそうrequire_onceとして働くだろう、そのディレクトリにあるように表示されていないため、動作しないであろうになっていることを完全なパスを返します。

0

あなたは次のように、ご希望のファイルの定数を定義する必要があります。このような別のファイルで使用

define("APPLICATION_NAME","my app"); 

include_once 'yourfile_with_constant_value'; 
$value = APPLICATION_NAME; 

大文字の単語と定数を定義するには、完全なケアしてください。

関連する問題