ウェブルートフォルダ/lang.php
にファイルがあります。このファイルにはlangという名前のクラスがあり、このクラスにはinc:/inc/con.php
という名前のフォルダにあるファイルが含まれています。require()関数が動作するのと同じ方法でファイルが存在するかどうかを確認する方法はありますか?
私はrootの別のファイルのこのファイルを含めることができますが、私は別のファイルをrep:rep/rep/rep.php
というサブフォルダに置いています。このファイルにはlang.phpファイルが含まれています。 /inc/con.php
。
私はそれを行うには多くの方法を試してみました、lang.phpはそれがフォルダを見つけることができません/inc/con.php
が含まれている場合、/lang.php
上のクラスを含み、その際rep/rep/rep.php
のように、彼の現在の位置を使用していますようです。私はこれらが/はlang.phpでLANGクラス内部の試みを必要と含ま作っ
がrep/rep/rep.php
からインクルード:二番目の作品
include(__DIR__."inc/con.php"); // fails
include(__DIR__."../inc/con.php"); // works
require(__DIR__."../inc/con.php"); // fails
require(__DIR__."../../inc/con.php"); // works
require("../inc/con.php"); // fails
require("../../inc/con.php"); // works
、私はなぜか分からないが、私が変更された場合、「に「が含まれます」それが失敗する必要があります!
Iは、これらの結果を取得し、((静止rep/rep/rep.php
から含まれている)/lang.php
にある)langのクラスの中からいくつかのエコーをした:だから、それは現在の位置であり、これは
echo \__DIR__;
// returns "/var/www/html/"
echo require(__DIR__."../../inc/con.php");
echo implode(',<br>',get_included_files());
// returns "/var/www/html/inc/con.php"
ので、これはファイルの絶対位置
if(file_exists(__DIR__."../../inc/con.php")) echo "exists";
else echo "not exists";
// returns "not exists"
ある
このファイルは存在しませんが、含めることができます!
if(file_exists("../inc/con.php")) echo "exists";
else echo "not exists";
// returns "exists"
私はそれを含めることはできませんが、存在します。
file_exists()関数のように、ファイルは "../inc/con.php"にありますが、これを含めるには "../../inc/con.php"を使用する必要があります。
次は失敗:
if(file_exists("../inc/cnxf.php")) require("../inc/cnxf.php");
は、どのように私は必要()関数の動作とファイルが同じように存在するかどうかを確認することができますか?
これは、 'autoloading'で' namespaces'を使用していないために起こります。 PHPとそこにはたくさんの例があります。 – matiaslauriti