2016-09-15 5 views
0

私の問題は、PHPファイルをインクルードすると、メインのPHPがパスになることです。これは私のサイトですPHPはDOCUMENT_ROOTのないファイルを参照します

はlocalhost /個人用サイト/ index.phpを

私はよくそれを記述するので、私はあなたにいくつかのわかりやすいコードを表示させないことができます
<?php 
    include('common/sayHello.php'); 
?> 

そして私は、管理フォルダ

を持っています

はlocalhost /個人用サイト/管理/ index.phpを

そして、私はいくつかの共通のファイル

はlocalhost /個人用サイト/共通/ sayHello.php

<?php 
    $text = file_get_contents(helloText.txt); 
    echo($text); 
?> 
を持っています

ローカルホスト/ mysite/common/helloText.txt

Hey! How you doing? 

しかし、動作しません。メインの "mysite/index.php"は "mysite/helloText.txt"を探し、 "mysite/admin/index.php"は "mysite/admin/helloText.txt"を探します。

DOCUMENT_ROOTを使用せずにhelloTextファイルを正しく参照できますか? URLパスを変更せずにファイルをインクルードする方法はありますか?

あなたは、私が「/」の前に「共通/ helloText.txt」を使用する必要があること、言うかもしれないが、それは代わりに、ローカルホスト/個人用サイトのローカルホスト/共通/ helloText.txtを探します/ ...

+3

したがって、 '/ mysite/common/helloText.txt'を使用してください。 – Barmar

+0

フルパスをハードコードしたくない場合は、なぜ 'DOCUMENT_ROOT'を使用しないのですか?これはまさにそのためのものです。 – Barmar

+0

@Barmarしかし、私はウェブ上でもそれを使用したいと思います。最終版(mysite.com/)をアップロードすると、mysite.com/mysite/common ..が検索されます。 –

答えて

0
この目的のために

私は通常私の設定で2つの定数を定義します。

define('PATH_ROOT', '/var/www/vhosts/example.com/app/'); 
define('HTTP_ROOT', 'http://example.com/'); 

だから今、私は簡単にPATH_ROOTでアプリケーション内で絶対パスを定義し、HTTP_ROOTでウェブサイト内ですることができます。

それでは、私たちのようなものがあります:

$myFile = 'some/path/foo.txt'; 
// write file to: /var/www/vhosts/example.com/app/some/path/foo.txt 
file_put_contents('Hello world!', PATH_ROOT . $myFile); 
// generate link to: http://example.com/some/path/foo.txt 
sprintf('<a href="%s">Click me!</a>', HTTP_ROOT . $myFile); 

をそして、あなたのアプリケーションは、あなたがする必要があるすべては、これらの2つの定数を変更している移動した場合。

関連する問題