2016-06-27 37 views
1

相対パス方法は? __dir__php相対パスへの方法

を使用する方法をここであまりにも多くのページを持った後

public_html 
    ├── config 
    | |__config.php 
    ├── core 
    | |__init.php 
    ├── helper 
    | |__helper.php 
    ├── libraries 
    | |__page1.php 
    ├── templates 
    │ ├── page1template.php 
    │ 
    │__index.php 
    │__page1.php 

前に私のファイル構造です。私はそれらを "rep"フォルダと "admin"フォルダに並べ替える必要があります。私の新しいファイル構造は次のようになります

問題は、私の必要とするものはまだ絶対パスです。私はすべてのパスの前に "../" を追加した場合

私のinitファイル

//Start Session 
session_start(); 

//Include Configuration 
require_once('config/config.php'); 

//Helper Function Files 
require_once('helpers/system_helper.php'); 
require_once('helpers/format_helper.php'); 

//Autoload Classes 
function __autoload($class_name){ 
    require_once('libraries/'.$class_name .'.php'); 
} 

私page1.php

<?php require('core/init.php'); ?> 
    //Get Template & Assign Vars 
    $template = new Template('templates/rep/page1.php'); 

以下のサンプルを参照してください。ページが正しく読み込まれます。以下を参照してください

しかし、インデックスがルートフォルダにあるため、私のindex.phpが破損するため、新しいパスが相対的に間違っています。私は関連する問題で2つの質問を見つけました。私はそれが../を置き換えるために__dir__を使用することに関連していると思うが、どこに置くべきか分からない。個人的に私にとって

PHP include relative path

Are PHP include paths relative to the file or the calling code?

答えて

1

、私は構造が特定の方法ことになっていると確信している場合、などのをやってファイルへの相対含ま作ろうとしています。例えば、core/init.phpのすぐ隣にあるcore/loader.phpにファイルを作ることができます。そして、ローダーと他のファイルの相対的な構造が常に同じであると仮定すると、core/loader.php 、と彼らはまだ限り、あなたは正しい道をrequire'edとして、ロードする必要があります。ここでのポイントは、あなたが今どこに(public_htmlの外推奨)するフォルダのセットを移動することができますということで

<?php 

// Get the path of whatever folder is holding the core/config/etc folders 
$main_dir=RealPath(DirName(__FILE__).'/../'); 

require("{$main_dir}/config/config.php"); 
require("{$main_dir}/helpers/system_helper.php"); 
// etc 

?> 

のようなものかもしれませんローダーに。

+0

ありがとうございます。あなたの記事とこれを何度も何度も何度も読んでいました。最後に私はdirname(__ DIR __)。 '/ path/to.file'を使用していました。 http://stackoverflow.com/questions/36577020/failed-to-open-stream-no-such-file-or-directory/36577021#36577021 – codenoob

関連する問題