2011-08-05 98 views
4

我喜歡使用它們的絕對路徑引用圖像,css和php文件,即從根開始,地址以「/」開頭。在一個地方定義根路徑

我需要包含所有位於「/ bin/res/include」的php文件。我想通了,我不能在PHP中使用絕對路徑,因爲我在HTML中。經過一番研究,我發現適合我的需要的最好的方法是

define("PHP_ROOT", "/home/a7503679/public_html/bin/res/include/"); 

,然後包括一些文件

include_once(PHP_ROOT."filename.php"); 

我不想粘貼第一每個HTML頁面上定義。我可以做一個全局定義嗎?我可以在一個地方定義一個不變的時間,並讓所有html頁面都知道它嗎?如果是這樣,全球地方如何以及在哪裏?


  • 我不能使用dirname(__FILE__);因爲只給出了完整路徑,我目前在文件夾中,這可能不是根。
  • 我無法使用$_SERVER['DOCUMENT_NAME'],因爲我正在使用共享託管服務。

[更新:解決方案] THX每一個人,尤其是里亞德爲它的想法,這是我做了什麼:

編輯我的.htaccess文件在我的網站的根目錄,並添加了以下線,

#Loads an init php located at <fullpath>/<path-to-folder-with-php-files-to-include>/init.php 
php_value auto_prepend_file /home/a7503679/public_html/bin/res/include/init.php 

現在我所有的HTML文件將包含的init.php文件,所以你應該(像我一樣)把那裏所有常見的PHP代碼,你需要每一個HTML頁面,其上在我的情況是:

<?php 
define("PHP_ROOT", "/home/a7503679/public_html/bin/res/include/"); #this solves the problem 
include 'lang.php'; #translations file 
?> 

在我需要在每個頁面上包含lang.php之前,它現在會自動完成。如果我需要包括任何其他的PHP文件,使用其絕對路徑,我只需輸入include PHP_ROOT.'filename.php';

回答

3

您可以在.htaccess

PS使用auto_prepend_file$_SERVER['DOCUMENT_ROOT']應該工作(共享hostings太)

+0

該文件「prepend」是一個PHP文件的定義代碼? '$ _SERVER ['DOCUMENT_ROOT']'返回'/ usr/local/apache/htdocsa',這個路徑與任何可用的地方都不對應(我甚至不知道它在哪!!:P) – dialex

1

我認爲你想要做的就是修改你的include_path in php.ini以包含你的自定義包含路徑。然後,您可以只包含沒有任何路徑限定符的文件,並且如果它們不在當前目錄中,PHP將爲它們搜索包含路徑。如果您不能修改您的php.ini,請在配置文件中撥打set_include_path,這個配置文件您無論如何都應該在每一頁上都包含這些。 :)

+0

我不知道我是否可以修改或創建'php.ini'文件,但是我有一個'.htaccess'文件。 'php.ini'應該放在哪裏?我想我沒有任何配置文件被包含在每個頁面中,你可以舉例嗎?那麼有一個...我可以打這個電話嗎?將定義粘貼到_css_文件中?聽起來很邪惡! – dialex

+0

我打印了一個phpinfo(),發現我在'/ usr/local/lib'已經有一個'php.ini',我不可能到達那裏。有沒有辦法使用.htaccess文件來包含「init」php文件?它似乎比使用css文件更直觀。 – dialex

0

添加定義爲包括包含像配置/數據庫的每一頁上頁/語言文件