2017-05-22 6 views
0

ウェブルートフォルダ/lang.phpにファイルがあります。このファイルにはlangという名前のクラスがあり、このクラスにはinc:/inc/con.phpという名前のフォルダにあるファイルが含まれています。require()関数が動作するのと同じ方法でファイルが存在するかどうかを確認する方法はありますか?

私はrootの別のファイルのこのファイルを含めることができますが、私は別のファイルをrep:rep/rep/rep.phpというサブフォルダに置いています。このファイルにはlang.phpファイルが含まれています。 /inc/con.php

enter image description here

私はそれを行うには多くの方法を試してみました、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"); 

は、どのように私は必要()関数の動作とファイルが同じように存在するかどうかを確認することができますか?

+0

これは、 'autoloading'で' namespaces'を使用していないために起こります。 PHPとそこにはたくさんの例があります。 – matiaslauriti

答えて

関連する問題