由于当前网站已过时,我正在重建非常简单的网站。它是三年前用简单的HTML制作的,目的是显示我的照片。
我使用.shtml和命令 #include 来重复这样的元素:
<!--#include virtual="/GotoUp.xml"-->
在新版网站上,我决定尝试PHP。但是相对于路径,命令 include 的工作方式不同。它需要一个相对于当前文件的包含文件的完整路径-它不适用于我的网站,因为它进一步更改文件的方向非常复杂。
<?php include './../../../Menu.php'; ?>
如何更改开始从根方向搜索文件的搜索算法?
页面的一部分:
<body>
<?php set_include_path ("/Menu.php") ?>
<?php include './../../../Metrisc/Yandex.php'; ?>
<div class="main">
<?php include './../../../Menu.php'; ?>
<title>Polina</title>
<div id="Images">
<img class="image" src="/Image/Portrait/Polina/DSC00750_Web.jpg" width="1200" height="1200" alt="" />
<img class="image" src="/Image/Portrait/Polina/DSC00820_Web.jpg" width="600" height="600" alt="" />
<img class="image" src="/Image/Portrait/Polina/DSC00792_Web.jpg" width="600" height="600" alt="" />
<img class="image" src="/Image/Portrait/Polina/DSC_2250_Web.jpg" width="600" height="900" alt="" />
<img class="image" src="/Image/Portrait/Polina/DSC00800_Web.jpg" width="600" height="900" alt="" />
<img class="image" src="/Image/Portrait/Polina/DSC_2253_Web.jpg" width="1200" height="795" alt="" />
</div>
<?php include './../../../Contacts.php'; ?>
</div>
</body>
My current site。新版本page1和page2
为清楚起见:摄影是我的主要爱好;我不是程序员,但是我已经开始学习javascript和PHP,将英语学习与其他有用的东西相结合,并可能在未来三年内在我的网站中创建一个交互式照片库:)
更新21.10.2018。我已经使用以下代码创建了a test page,并获取了“ getRoot()”-“ ../home/../vanirn/。 ./public_html/../Portrait/../“和 “ DIR ”-“ / home / v / vanirn / vanirntest / public_html / Image / Portrait / Polina”。我认为该功能出了问题。
<body>
<?php function getRoot()
{
$root = ROOT_DIR;
$root = str_replace('\\', '/', $root);
$pageroot = getcwd().'/';
$pageroot = str_replace('\\', '/', $pageroot);
$root = str_replace($root.'/', '', $pageroot);
$root = preg_replace('#(/.*?).*?(/)#', '/../', '/'.$root);
return substr($root, 1);
} ?>
<div class="main">
<?php echo getRoot(); ?>
<p></p>
<?php echo ROOT_DIR; ?>
<p></p>
<?php echo __DIR__; ?>
<?php include getRoot().'Menu.php'; ?>
<?php include './../../../Contacts.php'; ?>
</div>
</body>
答案 0 :(得分:1)
我为我的项目编写了一个可以使用的函数。
/**
*
* Return the root of the current page so we can call any page from any folder
*
*/
function getRoot(){
$root = ROOT_DIR;
$root = str_replace("\\", "/", $root);
$pageroot = getcwd() ."/";
$pageroot = str_replace("\\", "/", $pageroot);
$root = str_replace($root."/", '' , $pageroot);
$root = preg_replace("#(/.*?).*?(/)#", '/../', "/".$root);
$root = substr($root, 1);
return $root;
}
然后在根文件夹中的页面上设置此行。 **必须在您的根文件夹中定义,并且您必须在调用此函数的每个页面上包括定义文件。
define('ROOT_DIR', __DIR__);
最后,您可以像这样调用函数
include getRoot()."path/to/file";
基本上,该功能将添加正确数量的../,以将您设置回根文件夹。然后,您可以基于此设置所有变量。
****使用您的代码更新****
<?php
define('ROOT_DIR', __DIR__);
function getRoot(){
$root = ROOT_DIR;
$root = str_replace('\\', '/', $root);
$pageroot = getcwd().'/';
$pageroot = str_replace('\\', '/', $pageroot);
$root = str_replace($root.'/', '', $pageroot);
$root = preg_replace('#(/.*?).*?(/)#', '/../', '/'.$root);
return substr($root, 1);
}
?>
<body>
<div class="main">
<?php include getRoot().'Menu.php'; ?>
<?php include getRoot().'Contacts.php'; ?>
</div>
</body>
答案 1 :(得分:0)
我找到了更轻松的解决方案! 只需在“ .htaccess”上添加一个笔画:
php_value include_path“。:/ home / v / vanirn / vanirntest / public_html / includes /:/ home / v / vanirn / ivanpavlovphotograph.ru / public_html / includes /:/ home / v / vanirn / ivanpavlovphotograph.ru / public_html /“ 位于文件夹“ includes”中的所有文件将被加载到页面中。它既可以在服务器测试中也可以在主服务器中使用。