【问题标题】:Cannot use the constants set in my php.ini file无法使用我的 php.ini 文件中设置的常量
【发布时间】:2020-09-22 21:47:53
【问题描述】:

注意:根据我对 phpinfo 的调用,我正在使用 Apache2 处理程序在 Linux 上使用 PHP 7.4.6。 同样的调用验证了一堆常量被设置:precision、session.cookie_lifetime、 odbc.max_persistent 等等。

不过,在我的代码中,如果我说:

echo precision;

echo session.cookie_lifetime;

我收到警告,而不是它们的价值。上面的最后一行生成 2 个警告:

警告:在 /srv/www/htdocs/secure/docs/shine/pledgedrive 中使用未定义的常量会话 - 假定为“会话”(这将在 PHP 的未来版本中引发错误) /inc-common.php 第 10 行

警告:在 /srv/www/htdocs/secure/docs/shine/pledgedrive 中使用未定义的常量 cookie_lifetime - 假定为“cookie_lifetime”(这将在 PHP 的未来版本中引发错误) /inc-common.php 第 10 行

我的问题是:“我做错了什么?”或“为什么我不能要求这些常数?”或“我需要用一种新的方式来询问他们吗?”

【问题讨论】:

  • 你确定你不是在寻找ini_get('precision') 或类似的?我认为 ini 中的任何值都不能在运行时作为常量直接访问
  • @WesleySmith 是的,谢谢,这就是问题所在。我继承了一些有这个错误的代码,我认为他们知道他们在做什么。这是我第一次尝试在程序中使用这些配置常量。

标签: php session constants


【解决方案1】:

你想从 php.ini 获取一个 ini 参数。但是您将您的 ini 名称称为常量。您想要使用的方式是用于与您的问题没有任何相关性的 php 常量

你使用的方式是这个示例:

<?php

// pre defined constant sample
echo PHP_VERSION;

// custome constant sample
define('precision', 'Very high');
echo precision; // printing your name "Very high"

?>

但根据您的需要,您应该使用“ini_get”函数。

首先在你的ini文件中定义你的ini参数:

precision = "Very high"

最后使用“ini_get”来获取它:

echo ini_get('precision');

您可以使用“ini_set”在您的 ini 中设置现有参数。

注意:您不能在 ini 中使用“ini_set”设置不存在的参数

【讨论】:

  • 谢谢!因此,简短的回答是:“这些不是全局常量,您只能按名称使用。您必须使用 ini_get()、ini_set() 等函数来访问它们。” (然后,一旦我查看了这些函数,PHP 手册就有很多信息。)
  • 你是对的马克,简短的回答是你说的,我试图向你解释 ini 参数和常量之间的区别,而不仅仅是解决你的问题。正如前辈所说:我教你钓鱼,不给你一条鱼
猜你喜欢
  • 2013-12-25
  • 1970-01-01
  • 2019-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 2014-05-05
相关资源
最近更新 更多