簡體   English   中英

php include,所有路徑搞砸了

[英]php include, all paths get messed up

當我使用php include在我的網站中包含一個頁面時,我所包含的文件中的所有路徑都搞砸了。 包含的頁面就像它與頁面im包含的文件夾在同一文件夾中。

有沒有辦法避免/解決這個問題?

我嘗試解決此問題的一種方法是始終包含包含其他文件的文件所在的位置:

$here = dirname(__FILE__);
include($here."/../include.php"); 
// will include a file *allways* one level up from where *this* file is located
// and not the file that started the execution of the script.

我有時會從幾個不同的地方訪問文件,因此包含文件路徑可能會變得有點難以管理。 所以我通常嘗試在已知點包含配置文件,然后定義公共包含點的路徑。

// from a common config file
define("PATH_TO_CLASS", dirname(__FILE__)."/../class");
define("PATH_TO_MEDIA", dirname(__FILE__)."/../assets/media");

然后你可以在包含配置文件的文件中使用如下:

include dirname(__FILE__)."/../config.php";
include PATH_TO_CLASS."/snassy.class.php";

您可能需要正確設置包含路徑,例如通過:

set_include_path(get_include_path() . PATH_SEPARATOR . 'YourPath');

然后你只需要包括好像它是同一個目錄:

include 'FileName.php';

您的包含路徑設置為什么? 如果included.php與page.html不是同一目錄,則可以向您追加現有的包含路徑。

<?php
$path = '/path/to/includes';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
?>

試試PHP手冊

不,這是php include函數的默認行為:它基本上將包含文件的內容復制到包含文件中。 這樣,包含文件中的指令就像它們在包含文件中一樣(因為它們在某種程度上)。

您必須重構包含文件中的指令,以便它們可以從包含文件的文件夾操作,或者將包含文件的文件夾添加到包含路徑。

你可以使用絕對路徑? ' http://www.site.com/the/full/url/image.jpg '

甚至

$path = 'http://www.site.com';

$path.'images/image.jpg'或者不管它是什么

另一個答案給你。 如果由於某種原因事情是不可改變的, 我已經使用chdir()取得了一些成功。

例如,我有移動用戶來自並使用與主站點不同的目錄,但是想要使用主站點的所有功能和類,所以我想chdir(/to/the/main/site/folder); 在調用公共代碼之前,需要不同的包含路徑。 我會謹慎使用......因為事情會讓人感到困惑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM