问题标签 [php-7.4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2551 浏览

php - 在 PHP 7.4 中获取类型化属性的类型

我有一个DTO带类型的 PHP 变量:

我正在尝试制作某种自动映射器来填充属性,但是我需要检查变量的类型,但这似乎是不可能的。

ContactInputDto:

是否有可能使该行"gettype($this->$key)"工作,而不会引发以下错误:

类型化属性 App\Dto\CreateMembershipInputDto::$is_gift 在初始化之前不得访问

0 投票
2 回答
3612 浏览

php - mysqli 是否支持 PHP 7.4 中的 caching_sha2_password?

当我尝试从 PHP 7.3 升级到 PHP 7.4 时,我收到了这个错误:

执行caching_sha2 auth 109时出现意外的服务器响应

如我所见,这表明 PHP 7.4 MySQLi 正在尝试使用该caching_sha2_password插件。这篇文章指出 PHP MySQLi 不支持该插件(它也暗示了将来会支持它),但是由于 PHP 7.4 是新的并且似乎正在尝试使用它,我想它应该可以工作。此外,错误消息与不受支持的情况不同(拒绝访问身份验证方法未知)。

所以我将我的 MySQL 身份验证插件更改为caching_sha2_password(使用与以前相同的密码):

但这导致了另一个错误:

用户 'root'@'localhost' 的访问被拒绝(使用密码:YES)。

切换回 PHP 7.3 并mysql_native_password再次运行。

我对两个插件、同一个网站使用了相同的密码,并应用了相同的 php.ini 更改。但是,我没有更改任何mysqli配置。MySQL 的日志没有显示任何内容,apache2 日志仅显示“拒绝访问”错误消息。

php7.4-mysqli 是否支持caching_sha2_password是的

为什么我的密码被拒绝,我该如何解决? 请参阅我的后续问题

另外,如果 MySQLi 仍然不支持该插件:我该如何使用mysql_native_password它?

0 投票
4 回答
3601 浏览

php - php 7.4 在写入变量中的 Twig 问题

我在我的项目中使用 php7.3 并在这个项目中使用 Twig

将我的 php 版本升级到 7.4 后,我在树枝渲染中出现了一些错误。

我通过 Twig 变量设置了一些 html 类

例如:

使用 php 7.3 时,Twig 渲染的输出为:

我的来源没有问题。

但是当我的 php 升级到 php 7.4 时,输出发生了变化!

在变量之前在空间上删除了树枝,并且在我的源代码中发生了非常错误:/

从 Twig 到处调用变量,Twig 删除它之前的所有空间!

有什么解决办法吗?

如何解决?

0 投票
1 回答
423 浏览

php - PHP 7.4 中的循环引用

在 PHP 7.4 中,当循环引用对象中有方法时,我注意到gc_collect_cycles返回的收集循环数始终为零。destructor

当我删除该__destruct方法时,输出为:

您可以看到这种行为从 PHP 7.4.0beta4开始

这里发生了什么 ?即使禁用了 GC,是否会在析构函数中收集垃圾循环?

0 投票
2 回答
81707 浏览

php - 为什么我在引入属性类型提示时突然收到“在初始化之前不能访问类型属性”错误?

我更新了我的类定义以利用新引入的属性类型提示,如下所示:

但是,当试图将我的实体保存在 Doctrine 上时,我收到一条错误消息:

在初始化之前不能访问类型化的属性

这不仅发生在$idor$createdAt上,而且也发生在$valueor$updatedAt上,它们是可为空的属性。

0 投票
2 回答
1631 浏览

php - 确定 PHP 7.4 中的 PASSWORD_DEFAULT 内容

就在使用之前password_hash(),我检查 if PASSWORD_DEFAULT===PASSWORD_BCRYPT以查看是否需要在密码散列之前对密码进行一些清理(Argon2 不需要这个)。

我只是先通过快速散列传递它,因为 bcrypt 存在 NULL 字符和超过 72 个字符的密码问题(更多信息不同的示例)。

但在 PHP 7.4 中,该常量PASSWORD_DEFAULT现在设置为NULL.

那么我怎么知道password_hash()会使用什么算法呢?

0 投票
2 回答
12023 浏览

php - 如何在 PHP 7.4 中启用 opcache 预加载?

我想在 PHP 7.4 中的生产服务器上启用opcache 预加载( RFC )。

如果它改变任何东西,我正在使用Symfony 4 。

0 投票
2 回答
4734 浏览

php - 无法为 php 7.4.1 安装 php-devel

当我输入时,我无法安装 php-devel:

如何解决这个问题?谢谢

操作系统:CentOS Linux 7 (Core) CPE 操作系统名称:cpe:/o:centos:centos:7 内核:Linux 3.10.0-1062.el7.x86_64 架构:x86-64 php版本:PHP 7.4.1RC1

0 投票
3 回答
49988 浏览

php - 尝试访问 null 类型值的数组偏移量

从 php 7.1 迁移到 7.4。我们对一个 API 进行了大约 500 个功能测试,其中一些在迁移完成后开始失败并出现错误。这些测试以前到处都是通过,现在到处都失败了——不是全部,只有 39 个。

环境信息:

  • php 7.4
  • 密码接收
  • yii2

堆栈跟踪:

由于ErrorHandler.php:83这只是捕获错误,让我们看一下SomeFileHereCest.php:72

所以$this->config['backend']['api_prefix']这是一个字符串(“v1”)

而且我看不出问题出在哪里以及如何更深入地研究它。有任何想法吗?

0 投票
1 回答
2056 浏览

php - 有预加载文件时 Apache 不启动

我刚刚安装Opcache,一切看起来都很好,但是当我在其中添加一个 PHP 文件opcache.preloadphp.ini重新启动时,Apache 服务器没有启动。另一方面,在 CLI SAPI 中预加载工作正常!

当我注释掉opcache.preload并重新启动时,Apache 服务器工作

由于这个问题没有发出任何错误,我查找了 Apacheerror_log文件,结果发现问题是我没有定义 opcahe 预加载用户

致命错误“opcache.preload_user”尚未定义

但是根据PHP文档

出于安全原因,不允许以 root 身份预加载代码。该指令有助于让预加载以另一个用户身份运行。

我正在使用在WSL下运行 Ubuntu 的个人计算机

所以请指导我该怎么做?我应该添加什么用户?