我想使用__dir__
。
但是,我找不到任何关于如何设置它的好教程。我在Dropbox中有我的htdoc。
它是否有效?
define(__DIR___, 'd:documents/dropbox/yolo/swag/htdocs/myproject/test/newtest/
testphp/test_new/testincludes/1/new_folder/')
这是我的项目所在的目录,它有子文件夹。我想将一个文件包含在父文件夹中的另一个文件中。
我应该输入:
include'__DIR__/warlock.php';
或者我必须输入这样的内容吗?
include '___DIR__/wow/newb/guidesfornabz/classes/casters/warlock.php';
答案 0 :(得分:41)
您可以使用__DIR__
获取当前脚本的目录。它自版本5.3以来一直在PHP中,它与使用dirname(__FILE__)
相同。在大多数情况下,它用于包含来自包含文件的另一个文件。
考虑在名为inc
的目录中有两个文件,这是我们项目目录的子文件夹,index.php
文件所在的目录。
project
├── inc
│ ├── file1.php
│ └── file2.php
└── index.php
如果我们从include "inc/file1.php";
开始index.php
,它就能正常运作。但是,从file1.php
到file2.php
,我们必须包含相对于index.php ,而不是来自file1.php
(所以,include "inc/file2.php";
)。 __DIR__
已修复此问题,因此我们可以file1.php
执行此操作:
<?php
include __DIR__ . "/file2.php";
要回答您的问题:要包含您所包含文件的上层目录中的文件warlock.php
,这是最佳解决方案:
<?php
include __DIR__ . "/../warlock.php";
答案 1 :(得分:0)
我一直在寻找使用在 apache 的根 htdocs _DIR_ 变量中执行的,并且能够包含其他包含敏感数据的脚本,例如位于其外部的数据库登录凭据。我在尝试不同的选项时有点挣扎,但下面的方法效果很好。
首先,在我的 apache 虚拟主机配置中,我设置/包含到 apache 的 htdocs 的完整 linux 路径(您可以通过在末尾添加更多路径:/path/to/folder/):
php_value include_path ".:/var/www/mywebsite.ext/uat/htdocs"
然后在 .htacess 中存储在 apache 的 htdocs 根目录(和 git repo)中:
php_value auto_prepend_file "globals.php"
以上两者都可以在 .htacess 中设置,尽管它不适用于多种环境,例如 DEV、UAT、PRODUCTION,尤其是在使用 git repo 时。
在 apache 的 htdocs 中的 globals.php 文件中,我定义了一个名为 DIR 的变量,该变量由 htdocs php 脚本全局使用:
define('DIR', __DIR__);
然后在每个文件中 am 现在能够动态地包含/需要必要的文件:
require_once(DIR.'/file_folder_inside/apache's_htdocs/some-file.php');
DIR 变量将始终解析为 /var/www/mywebsite.ext/uat/htdocs,无论我在上面的示例中调用它的树中的哪个位置
/var/www/mywebsite.ext/uat/htdocs/file_folder_inside/apache's_htdocs/some-file.php.
现在,我想访问一个位于我的 apache 的 htdocs 根文件夹之外的 php 文件,这也很容易使用:
require_once(DIR.'/../apache's_htdocs_parent_folder/some-file-stored-outside-htdocs-eg-snesitive-credentials.php');