我的文件结构在这里
-www
-myAppDirectory
-init
-connect.php
-products
-api.php
products / api.php 文件将包含 init / connect.php 文件,如下所示。
<?php
include_once("./connect.php");
用户可以从浏览器调用api.php。
但它会发出警告
Warning: include_once(./connect.php): failed to open stream
我尝试使用它:
include_once($_SERVER["DOCUMENT_ROOT"] . "/connect.php");
但它会发出警告,
Warning: include_once(D:\init\www/connect.php): failed to open stream
答案 0 :(得分:2)
使用绝对路径总是好的(干净且稳固)。
include_once(__DIR__ . "/../init/connect.php");
答案 1 :(得分:1)
尝试../
输出产品目录,然后添加路径connect.php
include_once("../init/connect.php");
你也可以使用(未经测试)./
作为root
include_once("./init/connect.php");
答案 2 :(得分:1)
include_once("./connect.php");
将检查父目录之外的文件,即产品之外的文件,并且在它之外没有任何文件 connect.php 。你必须使用
include_once("../init/connect.php");
答案 3 :(得分:0)
我尝试给出更详细的答案。
对于初学者,我想提及__DIR__
PHP: Magic constants
D:\init\www\myAppDirectory\products
它包含执行当前脚本的目录的路径。
在你的情况下,类似于:__FILE__
没有结束斜杠(在Windows上)/反斜杠(linux等)
例如D:\init\www\myAppDirectory\products\api.php
会给你include_once("../init/connect.php");
现在,如果您想要从相对较近的目录中包含文件,我更愿意使用:
DIRECTORY_SEPARATOR
(可能不是必需的但是)使用include_once(".." . DIRECTORY_SEPARATOR . "init". DIRECTORY_SEPARATOR ."connect.php");
dirname($path)
您还可以使用$myAppDir = dirname(__DIR__); // D:\init\www\myAppDirectory
include $myAppDir . DIRECTORY_SEPARATOR . "init". DIRECTORY_SEPARATOR ."connect.php"
功能:
include
同样include_once
可能比{{1}}更快,因为最后一个必须首先检查所包含的文件。