【问题标题】:Why does 'include' not include a defined constant in a separate file?为什么“包含”不在单独的文件中包含已定义的常量?
【发布时间】:2018-07-31 00:58:10
【问题描述】:

我在 php 中包含文件有问题。

我有 2 个文件“settings.php”和“test.php”(托管在 localhost 中,所有 xampp 的默认设置和“allow_url_include=1”)。

现在。这是文件“settings.php”的内容:

<?
   define("TEST_INFO","Lorem ipsum");
?>

这是包含“setting.php”的文件:

“test.php”:

<?
include("http://127.0.0.1/projectFolder/settings.php");

echo(TEST_INFO);
?>

“test.php”的结果是:

注意:使用未定义的常量 TEST_INFO - 假定为“TEST_INFO” C:\xampp\htdocs\projectFolder\test.php 在第 4 行 TEST_INFO

“include”函数不会产生任何错误或警告,就好像它执行正确一样,但是包含文件中定义的常量(或任何变量)不起作用。

如果我尝试在没有所有 url 的情况下包含文件“setting.php”,它可以正常工作。 include("settings.php");

但我需要它这样工作:include("http://127.0.0.1/projectFolder/settings.php");

谢谢。

【问题讨论】:

  • 转向allow_url_include 选项是有风险的。您确实需要有关 php 应用程序安全性的教程。

标签: php variables xampp include constants


【解决方案1】:

您正在包含来自 URL 的资源。

  1. 第一个脚本中的 PHP 向 URL 发出 HTTP 请求
  2. 运行define(在第二个脚本中)的PHP在服务器上执行
  3. 输出通过 HTTP 发送到include()
  4. 输出包含在第一页中

define 语句在完全不同的脚本中执行(可能在不同的服务器上!)。

如果您想在当前脚本的上下文中执行 PHP,那么您必须 include 本地文件 而不是 HTTP URL时间>。

【讨论】:

  • 虽然不是问题,但可能值得一提的是短标签可能导致的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-23
  • 1970-01-01
  • 2019-09-16
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多