【问题标题】:Use of undefined constant PHP 7.2PHP 7.2 未定义常量的使用
【发布时间】:2020-03-16 19:42:03
【问题描述】:

自更新以来,我偶尔会看到此警告

警告:使用未定义的常量 SSL_CURRENT - 假定为“SSL_CURRENT” (这将在 PHP 的未来版本中引发错误) /usr/www/domain/phpmyd/listing.php 在第 151 行

这是行:

$pdf->Image($PMDR->get($PMDR->getConfig('map_type').'_Map')->getMapImageByCoords($listing['latitude'],$listing['longitude']),$pdf->GetX(),$pdf->GetY(),$pdf->pixelsToUnits(512),$pdf->pixelsToUnits(512),'','http'.(SSL_CURRENT ? 's' : '').'://maps.google.com/maps?q='.$listing['latitude'].','.$listing['longitude'],'N', false, 300);

光看,应该是这样的

$pdf->pixelsToUnits(512),'','http'.('SSL_CURRENT' ? 's' : '')

所以只是在 SSL_current 周围添加括号?是不是一直都是这样,因为我以前从未见过错误。

【问题讨论】:

  • @Nick 这没有任何意义。字符串'SSL_CURRENT' 总是真实的。为什么要在条件表达式中使用它?
  • @Barmar 大概SSL_CURRENT 实际上应该是一个定义的常量...
  • @Natsu 如果像上面这样定义,可以去掉条件,写成'https'
  • @Barmar 我在想用户定义的常量,例如define(SSL_CURRENT, 1)
  • @Natsu 仅仅因为您在列表中看到该警告并不意味着这就是导致该常量无法定义的错误发生的地方,因此它不直接处理配置的事实并不不排除这种可能性 IMO。

标签: php undefined


【解决方案1】:

我查看了 PHP 的源代码,从版本 4 开始的任何 PHP 版本中都没有定义常量 SSL_CURRENT

所以这个问题与PHP版本的变化无关。

无论出于何种原因,您之前都看不到有关该常量的警告,但肯定不是 PHP 版本更新导致该常量未定义。

因为这个字符串:

'SSL_CURRENT'

将始终计算为 true 然后这个条件表达式:

'SSL_CURRENT' ? 's' : '';

根本不是有条件的,因为它总是会返回“s”:

echo 'SSL_CURRENT' ? 's' : '';

所以也可以这样写

echo 's';

所以它等于以这种方式在您的代码中使用它:

$pdf->pixelsToUnits(512),'','https'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    相关资源
    最近更新 更多