我有文件/根/更新/测试.php.还有一个文件,/root/connect.php;这个文件有一行

include "../config.php";

在/root/update/test中.php.这是密码

set_include_path(".:/root");
include "connect.php";

当我运行/root/update/test时.php,它找到了connect.php,但找不到配置.php,给我

PHP Warning:  include(../config.php): failed to open stream: No such file or directory in /root/connect.php on line 2
PHP Warning:  include(): Failed opening '../config.php' for inclusion (include_path='.:/root')

这让我很困惑,因为警告让我觉得我做的每件事都是正确的——include路径是/root,它正在查找文件/配置.php(/config.php),它存在.有人能帮我澄清一下吗?请注意,使用绝对路径对我来说不是一个选项,因为要部署到我无权访问的生产服务器.

Ubuntu/Apache

推荐答案

您可以始终使用__DIR__:

include(dirname(__DIR__).'/config.php');

是‘magical constant’,返回当前文件的目录,不带尾随的劈开.它实际上是一个绝对路径,您只需将文件名连接到__DIR__即可.在本例中,因为我们需要提升一个目录,所以我们使用PHPdirname来提升文件树,从这里我们可以访问config.php.

您也可以使用此方法设置根路径:

define('ROOT_PATH', dirname(__DIR__) . '/');

在test.php中,会将根目录设置为/root/级别.

include(ROOT_PATH.'config.php');

然后,应该将配置文件包含在您想要的位置.

Php相关问答推荐

如何在php中更新ajax成功的子div元素

WooCommerce CSS 帮助更改订单备注输入框的大小

数字到 Excel 列名的转换

Xdebug xdebug.mode = 调试不适合我

Laravel如何保存base64数据图像?

在 WooCommerce 单品页面上使用 ACF true/false字段

如何降级或安装特定版本的 Composer?

如何在 laravel 中运行特定迁移

如何在 Laravel whoops 输出中隐藏 .env 密码?

配置:错误:请重新安装 libzip 发行版

在 Laravel 中使用 https 加载 Blade 资源

dyld:库未加载:/usr/local/lib/libjpeg.8.dylib - homebrew php

如何获取 WooCommerce 订单详细信息

要求(供应商/autoload.php):无法打开流

如何去除 PHP 变量中的空格?

如何在 Laravel 模型上设置属性的默认值

Laravel 什么是守卫?

在 Ubuntu 上的 php 5.6 上安装 php-zip

如何在不使用 Firebase 控制台的情况下发送 Firebase 云消息传递通知?

无法创建缓存目录.. 或目录不可写.在 Laravel 中进行无缓存