【问题标题】:Defining PHP constants in header file doesnt work?在头文件中定义 PHP 常量不起作用?
【发布时间】:2014-11-07 19:31:52
【问题描述】:

我试图在我的 config.php 文件中定义常量。它的主要用途只是配置,我相信您已经猜到了。但它不起作用。这是我的 config.php 文件:

<?php
    define("KPEREQUEST", "0", true);
    define("KPERESPONSE", "1", true);

    define("KPEGET", 0, true);
    define("KPEPOST", 1, true);
?>

这是我包含 config.php 并打印定义 kPAPost 时的结果:

KPEPOST: ""

但如果我在 index.php 中定义常量并从 index.php 打印它们,结果如下:

KPEPOST: "1"

** 编辑 **

这是我的 index.php 文件:

<?php
    $title = "API Documents";
    include 'header.php';
    include "config.inc.php";

    echo "KPEPOST: \"" . KPEPOST . "\""; 
?>

<?php include 'footer.php'; ?>

我已经在 wordpress、magento 等中看到过一百万次这样的操作。我不知道为什么这不起作用,我已经进行了大量研究来解决这个问题,但我陷入了死胡同现在。任何帮助,将不胜感激。为什么我不能在配置文件中定义常量并在包含配置文件的文件中使用定义?

【问题讨论】:

  • 打印定义:包括“config.inc.php”; echo "KPEPOST: \"" . KPEPOST . "\"";
  • 请在问题中显示实际代码,而不是评论。
  • kPAPost 没有定义你的意思是KPEPOST
  • 对,这就是我的意思。我展示了文件。那是直接复制和粘贴
  • 请启用完整的error_reporting,看看它说了什么;并且还使用require 而不是include

标签: php constants


【解决方案1】:

听起来您的包含路径中没有 config.php(或 config.php 的特定副本)。

建议

  1. 为您的整个网络应用定义一个根 index.php
  2. 这样做:

    define('BASE_DIR', realpath(__FILE__));
    
  3. 那么你可以这样做:

    require_once BASE_DIR.'config.php';
    

进一步阅读

【讨论】:

  • 虽然我用的是 dirname() 而不是 realpath()
【解决方案2】:

另一种可能的解决方案是在包含期间在文件名前面使用 ./。无意中发现的。

define("kPEPost", "1");

包括:

include("./header");
include("./includes/config.inc.php");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    相关资源
    最近更新 更多