※ ChatGPTを利用し、要約された質問です(原文:定数が保持されない!(ディレクトリによって異なる!))
PHPファイルで定義した定数が他のファイルで読み込めない問題の解決方法
このQ&Aのポイント
PHPファイルで定義した定数を他のファイルで読み込めない問題について質問があります。
ディレクトリによって、定数を読めるファイルと読めないファイルがあるようです。
Apache等の設定による「ディレクトリ間の定数保持の制限」が問題の原因かどうか知りたいです。
定数が保持されない!(ディレクトリによって異なる!)
PHP内のファイルで定義した定数を、そのファイルから呼び出された他のファイルで読み込めません。ディレクトリによって、その定数を読めるファイルと読めないファイルがあります。
他の環境で動いていたファイルを持ってきただけなのに、なぜでしょうか?
Apache等の設定で「ディレクトリ間の定数保持の制限」のようなものがあるのでしょうか? お願いします!
【具体的には以下です。】
indexファイルからdefaultファイルをインクルードし、その中で定数を定義。
次に、indexから同じディレクトリのファイルをインクルードし、その中から定数を呼び出し成功。
最後に、indexから遠いディレクトリのファイルをインクルードし、その中から定数を読み込むが、不成功。
【ファイルの記述は以下です。】
ファイル「index.php」内の記述
require('../../inc/default.php'); //←この中で定数PATHTESTを定義。
var_dump(PATHTEST); //←これは成功。
require("./test.php"); //←この中では定数PATHTESTが読める
require(PATHTEST."/test_ini.php"); //←この中では定数PATHTESTが読みこめない。
ファイル「default.php」内の記述
define("PATHTEST","http://localhost/www/inc/ini");
ファイル「test.php」内の記述
var_dump(PATHTEST); //←これは成功。
ファイル「test_ini.php」内の記述
var_dump(PATHTEST); //←これは読み込めない。
【ブラウザ上からの結果確認。】
string(28) "http://localhost/www/inc/ini" string(28) "http://localhost/www/inc/ini" string(8) "PATHTEST"
【環境】
今の環境:WindowsXP, Apache2, PHP5
これらが動いていた環境:LINUX, Apache(1か2か不明), PHP4
以上です。お手数ですが、教えてください!
補足
煩雑な質問にご回答頂き、誠にありがとうございます。返信が大変遅くなりました。 おっしゃるphp.iniの設定は、以下のように問題なかったです。 allow_url_fopen = On その証拠に、私の質問文の以下の部分は成功しております。 > ファイル「index.php」内の記述 > require(PATHTEST."/test_ini.php"); (そして、test_ini.phpの読み込みに成功していることは、質問文の以下のように確認できます。ただ定数が引き継がれません。) > ファイル「test_ini.php」内の記述 > var_dump(PATHTEST); > 【ブラウザ上からの結果確認。】 > string(8) "PATHTEST" 【この問題があった当日、以下のように対処し、とりあえず問題はなくなったと記憶しております】 回答を頂く前に、http指定でなくパス指定に以下のように変えたら、 【旧】define("PATHTEST","http://localhost/www/inc/ini"); 【新】define("PATHTEST","C:\www\inc\ini"); なぜか定数がtest_ini.phpからも読めるようになりました。 (と、記憶しております。なにぶん2ヶ月もたってしまったので。対処済みなので、現在は「困り度」は低です。)