如何使用__dir__?
How to use __dir__?
我想使用 __dir__
.
但是,我找不到任何关于如何设置它的好教程。我在 Dropbox 中有我的 htdocs。
它像这样工作吗?
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';
您可以使用 __DIR__
获取当前脚本的目录。 PHP 是从 5.3 版本开始才有的,和使用 dirname(__FILE__)
是一样的。在大多数情况下,它用于从包含的文件中包含另一个文件。
考虑在名为 inc
的目录中放置两个文件,该目录是我们项目目录的子文件夹,index.php
文件位于该目录中。
project
├── inc
│ ├── file1.php
│ └── file2.php
└── index.php
如果我们从 index.php
开始执行 include "inc/file1.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";
我一直在寻求使用在 apache 的根 htdocs 中执行的 _DIR_ 变量,并能够包含其他包含敏感数据的脚本,例如位于它之外的数据库登录凭据.我在尝试不同的选项时遇到了一些困难,但下面的选项运行得非常好。
首先,在我的 apache 虚拟主机配置中,我 set/include apache 的 htdocs 的完整 linux 路径(您可以通过在末尾附加 :/path/to/folder/ 来添加更多路径):
php_value include_path ".:/var/www/mywebsite.ext/uat/htdocs"
然后在存储在 apache 的 htdocs 根目录(和 git 存储库)中的 .htacess 中:
php_value auto_prepend_file "globals.php"
以上两项都可以在 .htacess 中设置,尽管它不适用于多种环境,例如 DEV、UAT、PRODUCTION,尤其是在使用 git 存储库时。
在 apache 的 htdocs 中我的 globals.php 文件中,我定义了一个名为 DIR 的变量,它被 htdocs php 脚本全局使用:
define('DIR', __DIR__);
然后在每个文件中我现在能够动态地 include/require 必要的文件:
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.
现在,我想访问一个 php 文件,它位于我的 apache 的 htdocs 根文件夹之外,也可以通过以下方式轻松实现:
require_once(DIR.'/../apache's_htdocs_parent_folder/some-file-stored-outside-htdocs-eg-snesitive-credentials.php');
我想使用 __dir__
.
但是,我找不到任何关于如何设置它的好教程。我在 Dropbox 中有我的 htdocs。
它像这样工作吗?
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';
您可以使用 __DIR__
获取当前脚本的目录。 PHP 是从 5.3 版本开始才有的,和使用 dirname(__FILE__)
是一样的。在大多数情况下,它用于从包含的文件中包含另一个文件。
考虑在名为 inc
的目录中放置两个文件,该目录是我们项目目录的子文件夹,index.php
文件位于该目录中。
project
├── inc
│ ├── file1.php
│ └── file2.php
└── index.php
如果我们从 index.php
开始执行 include "inc/file1.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";
我一直在寻求使用在 apache 的根 htdocs 中执行的 _DIR_ 变量,并能够包含其他包含敏感数据的脚本,例如位于它之外的数据库登录凭据.我在尝试不同的选项时遇到了一些困难,但下面的选项运行得非常好。
首先,在我的 apache 虚拟主机配置中,我 set/include apache 的 htdocs 的完整 linux 路径(您可以通过在末尾附加 :/path/to/folder/ 来添加更多路径):
php_value include_path ".:/var/www/mywebsite.ext/uat/htdocs"
然后在存储在 apache 的 htdocs 根目录(和 git 存储库)中的 .htacess 中:
php_value auto_prepend_file "globals.php"
以上两项都可以在 .htacess 中设置,尽管它不适用于多种环境,例如 DEV、UAT、PRODUCTION,尤其是在使用 git 存储库时。
在 apache 的 htdocs 中我的 globals.php 文件中,我定义了一个名为 DIR 的变量,它被 htdocs php 脚本全局使用:
define('DIR', __DIR__);
然后在每个文件中我现在能够动态地 include/require 必要的文件:
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.
现在,我想访问一个 php 文件,它位于我的 apache 的 htdocs 根文件夹之外,也可以通过以下方式轻松实现:
require_once(DIR.'/../apache's_htdocs_parent_folder/some-file-stored-outside-htdocs-eg-snesitive-credentials.php');