0

我买了一台新笔记本电脑并安装了新版本的 XAMPP。我移动了我正在使用的系统,但它在这台计算机上无法正常运行。

我认识到的第一个问题是它不包含来自相对于包含它的文件的位置的文件。我config.php在目录中有一个文件includes/以及我的include.php文件。在include.php文件中我必须输入,require 'includes/config.php';即使它config.phpinclude.php. 在我的另一台电脑上,我只需要这样做require 'config.php';

另外,由于包含的文件没有与我正在查看的主文件一起加载,因此没有定义变量和常量,所以它似乎是自动定义它们?

Notice: Use of undefined constant DB_HOST - assumed 'DB_HOST' in C:\xampp\htdocs\Xion\includes\include.php on line 6

这是较新版本的 PHP 上的配置问题吗?

4

2 回答 2

1

通常 PHP 核心设置include_path也包含当前路径:它由.(点)表示,添加到包含路径的列表中:

include_path=".;c:\php\includes"

引用文档

在包含路径中使用 a.允许相对包含,因为它表示当前目录。但是,显式使用 include'./file'比让 PHP 总是检查当前目录中的每个 include 更有效。

是的,任何裸名(非引号字符串)都将被 PHP 作为常量名处理。如果未定义此常量(如您的情况),PHP 会将其转换为字符串(尽管发出通知)。

于 2013-06-06T23:15:28.880 回答
0

通知错误是因为您正在访问像 $someArray[DB_HOST] 这样的数组。数组键应该有引号,例如 $someArray['DB_HOST']。没有引号是常量,键是字符串,而不是常量。

包含路径问题也很标准。如果您有以下文件:

index.php
includes/config.php
includes/include.php

如果您加载 index.php 并包含该文件includes/include.php,您将必须输入完整路径includes/include.php。如果里面include.php你想包含includes/config.php. php 将路径视为相对于加载原始脚本的位置,即 index.php。想一想:

  • 在脚本中,您加载并运行index.php.
  • index.php你包括includes/include.php. 这不会让您移动,includes/include.php而是获取includes/include.php并将代码带入index.php
  • 来自的所有代码都includes/include.php像从内部一样运行index.php
  • 你包括includes/config.php. 从技术上讲,您仍然在index.php其中,因此您必须像从内部调用一样引用该文件index.php

要修复包含路径,您可以使用set_include_path函数并将完整路径添加到包含目录(或相对于包含目录),然后您可以includes/从路径中删除。includes/如果在其他任何地方都找不到文件,PHP 只会检查文件是否在其中。您也可以只更改 php.ini 或 .htaccess 文件中的include_path指令。

于 2013-06-06T23:29:26.457 回答