簡體   English   中英

php包含根目錄以外的目錄中的文件

[英]php include files from directories other than root directory

我有一個全局模板頁面,/ /layout_header.php以及存儲在/aFolder/index.php其他一些文件。

/layout_header.php ,我有:

<?php
    // Reference to scripts and other files
    echo "<img src='img/lollipop.png'/>";
    echo "<script src='js/move.js'/>";
    echo "<a href='aFolder/movement.php'>Click here!</a>";
?>

/aFolder/index.php ,我有:

<?php
    include "../layout_header.php";
?>

現在,/ /aFolder/index.php調用/layout_header.php文件沒有問題。 不幸的是,因為目錄現在是/aFolder ,我面臨以下問題:

  • 無法查看圖像,因為圖像現在鏈接為/aFolder/img/lollipop.png (不存在)
  • 由於上面列出的原因,無法執行腳本。
  • 由於上面列出的原因,網址無效。

我的許多腳本和css文件都使用相對路徑。 換句話說,如果index.php放在根文件夾中,一切正常。

我該如何解決子目錄中的文件問題?

您可以在所有PHP框架(至少是專業人員)中看到變量/常量為APPPATH,BASEPATH等。因此,您需要在項目中定義類似的變量/常量並根據需要使用它。

<?php
// a.php: assuming this included everywhere at very first line 
// and located in root directory
// preferable, define a constant instead of variable, cos it 
// may used in functions directly without "global $ROOT";

// for "include"
define('ROOT', __DIR__); // for PHP >= 5.3
define('ROOT', realpath(dirname(__FILE__)));  // for PHP < 5.3
// for "src, href" etc
define('HTTP', $_SERVER['SERVER_NAME']); // for local development support i.e foo.com.local

// includes
include ROOT .'/layout_header.php';
include ROOT .'/classes/mailer.php';
include ROOT .'/foo/bar/baz.php';
...

// src,href
printf('<script src="%s/js/move.js" />', HTTP);
printf('<img src="%s/img/lollipop.png" />', HTTP);

print '<a href="'. HTTP .'/aFolder/movement.php">Click here!</a>';
...
?>

總是使用$ _SERVER ['DOCUMENT_ROOT']。'path / to / file'來包含php文件的相對位置。

對於圖像和腳本文件以及css文件,請使用yourdomain.com/path/to/file.extension

您是否嘗試過使用完全root而不是relative。

define('WEB_ROOT', 'http://yourdomain.com/');  // localhost path etc


echo "<img src=".WEB_ROOT."img/lollipop.png'/>";
echo "<script src=".WEB_ROOT."'js/move.js'/>";
echo "<a href='".WEB_ROOT."aFolder/movement.php'>Click here!</a>";

你可以做很多解決方案:

  • 轉到配置文件以更改項目的根目錄。

  • 將index.php保留在文件夾aFolder / index.php中,並將其重定向到另一個文件

  • 更改您的htacess文件以進行重定向

  • 通過從服務器獲取URL來更改所有路徑。

我將采用第二個(復制索引並將其與/layout_header.php一起使用)從aFolder / index.php中刪除內容並向其添加重定向到另一個索引文件:

<?php

   header( 'Location: ../index.php' ) ;

?>

暫無
暫無

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

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