我需要将父目录和其他子目录中的文件包含到子目录中。我以前只使用include('/ rootdirectory / file.php')就完成了;但现在它似乎不起作用。
只是想知道我怎么能这样做,谢谢。
这是我的确切行:
include('/forums/groups.php');
它给了我这个错误(页面仍在运行):
警告: include(/forums/groups.php)[function.include]:失败 open stream:没有这样的文件或目录 行上的C:\ xampp \ htdocs \ forums \ blog \ posts.php
警告: include()[function.include]:打开失败 '/forums/groups.php'包含在内 (include_path ='。; C:\ xampp \ php \ PEAR')in 第3行的C:\ xampp \ htdocs \ forums \ blog \ posts.php
答案 0 :(得分:73)
include()
及其亲属采用文件系统路径,而不是相对于文档根目录的Web路径。要获取父目录,请使用../
include('../somefilein_parent.php');
include('../../somefile_2levels_up.php');
如果以/
开头,将使用绝对系统文件路径:
// Full absolute path...
include('/home/username/sites/project/include/config.php');
答案 1 :(得分:6)
这是我写的那个问题:
<?
function absolute_include($file)
{
/*
$file is the file url relative to the root of your site.
Yourdomain.com/folder/file.inc would be passed as
"folder/file.inc"
*/
$folder_depth = substr_count($_SERVER["PHP_SELF"] , "/");
if($folder_depth == false)
$folder_depth = 1;
include(str_repeat("../", $folder_depth - 1) . $file);
}
?>
希望它有所帮助。
答案 2 :(得分:6)
如果您的服务器没有使用
解析父目录的文件 include("phpdom/simple_html_dom.php");
$html=file_get_html("https://www.aliexpress.com/item/2017-Kids-Baby-Sweater-clothes-sets-2PCS-Winter-Newborn-baby-cotton-Long-sleeve-Top-pants-Fashion/32794929322.html?spm=2114.search0104.3.369.58a4e0a3HHUVH3&s=p&ws_ab_test=searchweb0_0,searchweb201602_1_10152_10151_10065_10344_10068_10342_10343_10313_10059_10340_10341_10534_100031_10084_10604_10617_10083_10616_10103_10307_10615_10142,searchweb201603_25,ppcSwitch_4&algo_expid=82c85051-8e8e-42bd-8a6e-0f39e5b0ba1a-47&algo_pvid=82c85051-8e8e-42bd-8a6e-0f39e5b0ba1a&transAbTest=ae803_4&priceBeautifyAB=1");
$title=$html->find(".p-available-stock");
foreach ($title as $key) {
echo $key;
}
试试这个:
include '../somefilein_parent.php'
答案 3 :(得分:4)
取决于您尝试包含的文件的位置。
示例:
/rootdir/pages/file.php
/someotherDir/index.php
如果你在index.php中写了以下内容:
include('/rootdir/pages/file.php');
这会产生错误,因为它会试图获得:
/someotherDir/rootdir/pages/file.php
当然不存在......
所以你必须使用include('../rootdir/pages/file.php');
答案 4 :(得分:3)
在外行人的术语和实用性方面,我认为这是一个旧的DOS技巧/事物。哇!那是什么? DOS?从来没有听说过!
“..”将您退出当前子目录一次到更高的文件夹/目录,然后 ..输入两次输入后退2更高的父文件夹。继续添加“ ..输入”,您很快就会发现自己位于目录的顶层。
至于新手要更好地理解这一点,请考虑这一点(就家用PC或“C:\驱动器”而言,如果你知道这意味着什么,而不是web-servers / host“根目录”)。当你在它的时候,考虑你的网站存在于家用电脑硬盘上的某个地方,埋在C:\驱动器下的某个文件夹中。最后,您可以将其视为“..”返回一个目录,“/”是前一个目录/文件夹。
现在! 如果您正在使用命令提示符并且位于PC的“ myDocuments ”文件夹中,则必须通过键入“ ../ 强>”。 如果您想在仍在myDocuments文件夹中时访问位于widows目录中的文件,理论上可以键入 ../ windows ;实际上在DOS命令提示符下你只需输入 .. ,但我正在为你设置网页。 / 会自然地重定向到另一个目录。
使用“ myDocuments ”可以假装您在其中创建了名为“PHP1”和“PHP2”的2个文件夹,我们现在拥有这些文件夹:
在PHP1中,放置一个名为index.php的文件。在PHP2文件夹中放置了一个名为Found.php的文件。它现在变成了:
里面 C:\ myDocuments \ PHP1 \ index.php 文件,您需要编辑并键入以下内容:
<?php include ('../php2/found.php')?>
../ 是位置因此它会将您当前的文件位置视为“C:\ myDocuments \ PHP1 \ index.php”并且是一个指令,告诉它退出PHP1 < / strong>目录并输入或前进到PHP2 目录以查找 Found.php 文件。但是它读了吗?看看我对下面的故障排除的看法。
现在!假设你有1个文件夹PHP1和一个子文件夹PHP2:
你只需要参考/代码
<?php include('/PHP2/found.php') ?>
因为PHP2作为子目录存在,在PHP1目录下面或内部。
如果上述方法不起作用,则可能与访问/ htaccess或目录权限或拼写错误有关。为了增强这一点...陷入困境...如果“found.php”文件中有错误/错字,它会在错误渲染时崩溃,这可能是你需要的原因(require / require_once)体验到它没有改变目录或访问文件的错觉。 最后想到这个问题,你可能需要实例化你的函数或引用,以便通过创建一个新的变量或对象来使用included / require“whatever”,例如
$newObject = new nameobject("origianlThingy");
请记住,仅仅因为你包含/要求某些内容,有时仅仅意味着,它包含/需要运行,但可能需要重新创建它以使其处于活动状态或访问它。 新肯定会重新创建一个“如果它是可读的”实例,并在保留原始文档的同时使其在当前文档中可用。但是,您应该在所有实例中引用新创建的变量 $ newObject ....如果是全局的。
从一些网络主机帐户的角度来看这个;网络主机是一些超过大小的硬盘驱动器(就像在你的PC上),你的域只不过是他们分配给你的文件夹。您的文件夹名为root。在该文件夹中,您可以执行任何您可以执行的操作。
您在目录/文件夹之间移动的“多种方式之一”是使用../
多次来退出当前的参考到文件夹位置你想找到。
在我醉酒的状态下,我意识到我知道太多了,不能理智 足以疯了!“
答案 5 :(得分:2)
任何以斜杠开头的路径都是绝对路径。从服务器的根文件夹而不是文档根目录的根文件夹。您可以使用../
进入父目录。
答案 6 :(得分:1)
我从弗兰克那里获得了灵感,我在我的&#34; settings.php&#34;中添加了类似的东西。当有链接时,该文件将包含在所有页面中:
&#34;的settings.php&#34;
$folder_depth = substr_count($_SERVER["PHP_SELF"] , "/");
$slash="";
for ($i=1;$i<=($folder_depth-2);++$i){
$slash= $slash."../";
}
在我的header.php中将包含在所有页面中:
a href = .... php echo $ slash。&#39; index.php&#39; ....
似乎它在本地和托管环境中都有效....
(注意:我是绝对的初学者)
答案 7 :(得分:0)
根目录(在PHP中)是被ping的文件的目录。例如,我转到http://localhost/directory/to/file/index.php,根目录将是“/ dictory / to / file”,因为它是您发出Web请求的目录。
答案 8 :(得分:0)
早先有同样的问题解决过这样的问题:
包括( '/../包括/ config.php中'); // note'/'出现在'../ includes / config.php'
之前
答案 9 :(得分:0)
您可能会对使用php的内置函数realpath()感兴趣。 并传递恒定的 DIR
例如: $ TargetDirectory = realpath(__ DIR __。“ /../ ..”); // //会将您带回2个文件夹
String realpath()::返回规范化的绝对路径名..
答案 10 :(得分:0)
我不敢相信所有答案都指向函数dirname()
(自PHP 4起可用)。
基本上,它返回所引用对象的完整路径。如果您使用文件作为参考,该函数将返回文件的完整路径。如果引用的对象是文件夹,则函数将返回该文件夹的父文件夹。
https://www.php.net/manual/en/function.dirname.php
对于当前文件的当前文件夹,请使用$current = dirname(__FILE__);
。
对于当前文件夹的父文件夹,只需使用$parent = dirname(__DIR__);
。