【问题标题】:How do I make PHP understand that DOCUMENT_ROOT is not a string? [duplicate]如何让 PHP 理解 DOCUMENT_ROOT 不是字符串? [复制]
【发布时间】:2013-03-14 10:04:17
【问题描述】:
Notice: Use of undefined constant DOCUMENT_ROOT - assumed 'DOCUMENT_ROOT' in /home/syole/public_html/includes/config.php on line 21

Notice: Use of undefined constant DOCUMENT_ROOT - assumed 'DOCUMENT_ROOT' in /home/syole/public_html/includes/config.php on line 22

PHP 看到了一个未定义的常量,它被视为字符串,这导致我的网站只显示一个空白页面,我如何让 php 理解 DOCUMENT_ROOT 是预定义的/应该是预定义的而不是字符串?

我不知道“服务器配置”可能在哪里,但我的网站过去可以正常工作,但现在不行了,所以我认为它必须在那里正确定义,无论在哪里,最有可能在 cpanel 上?

我认为 Coda2 在连接到我的 mySQL 数据库时导致了这个问题。

我似乎无法解决这个问题,在添加 error_reporting(E_ALL); 之前,我什至不知道这个错误。

【问题讨论】:

  • 这不是一个常数。它不是预先定义的。访问$_SERVER['DOCUMENT_ROOT']时需要引用。

标签: php constants


【解决方案1】:

不要这样做:

$_SERVER[DOCUMENT_ROOT]

改为这样做:

$_SERVER['DOCUMENT_ROOT']

您需要引用字符串(这是),而不是常量(不是)。

如果您在插值字符串中使用它,请这样做:

$a = "foo {$_SERVER['DOCUMENT_ROOT']} bar";

{} 大括号允许您在双引号字符串中使用单引号/双引号。

【讨论】:

  • 谢谢您,已修复此错误。我的网站仍然是空白的,这意味着我真正的错误是别的,但这确实有帮助。
【解决方案2】:

XDebug 表示 'DOCUMENT_ROOT' 是一个字符串,在 Array() 内部 $_SERVER

echo $_SERVER['DOCUMENT_ROOT'].'<br />';

echo gettype($_SERVER).'<br />';
echo gettype($_SERVER['DOCUMENT_ROOT']).'<br />';

echo '<pre>';
print_r($_SERVER);
echo '<pre>';

【讨论】:

    【解决方案3】:

    将此添加到您的配置文件中

     define('DOCUMENT_ROOT', $_SERVER['DOCUMENT_ROOT']);
    

    如果您想坚持当前的持续通话。或者你应该按照@cal 的建议去做。

    【讨论】:

      猜你喜欢
      • 2012-08-12
      • 1970-01-01
      • 2016-06-05
      • 2021-03-28
      • 2013-07-07
      • 1970-01-01
      • 2011-10-29
      • 2018-08-25
      • 1970-01-01
      相关资源
      最近更新 更多