问题标签 [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 回答
405 浏览

php - PHP 类型化属性批量声明不能将 null 分配给可为空的字段

我在违反直觉的错误/属性上有盖章。

有人可以向我解释为什么第二行不起作用。

PHP 版本 7.4.2。

0 投票
2 回答
1184 浏览

php - 避免 composer 的 autoload.php 解析所有文件

这是我的问题:我已经将一个复杂的应用程序升级到 PHP 7.4,是的,我没有进行足够彻底的测试。

现在我想使用较旧的 PHP 版本运行任务,但它无法解析我所有的供应商文件。这是错误和行。这是 PHP 7.4 的一个新特性。

PHP 解析错误:语法错误,意外的“?”,在第 25 行的 .\vendor\sentry\sentry\src\functions.php 中需要变量 (T_VARIABLE)

到目前为止,我认为 Composersvendor\autoload.php仅在需要时才在供应商目录中加载类和函数。不会加载未使用的类,因此不会加载用 PHP 7.4 编写的违规文件。

不幸的是,我注意到,这require_once('./vendor/autoload.php')足以看到解析错误。是否可以以某种方式配置 Composer,它不会预加载供应商文件,而是仅在请求类或函数时才加载它们?

0 投票
1 回答
540 浏览

moodle - 将moodle 2.7.1 升级到php 7.0 和mysql 5.6。但是如果升级mysql就无法连接mysql 8.0

Moodle 应用程序使用 php 7 和 mysql 5.6 运行。

Whenm 将 mysql 版本从 5.6 更新到 8.0。

Moodle 无法连接到 mysql 8.0 的数据库在此处输入图像描述

0 投票
0 回答
367 浏览

php - 当php运行get_magic_quotes_gpc()时邮递员没有响应

我的php版本是7.4。当运行邮递员测试我的 api 时,它返回消息

无法得到任何回应

(我确实关闭了我的 SSL 证书和代理。)因此,我查看了 apache 错误日志,发现如下错误:

PHP 已弃用:函数get_magic_quotes_gpc()在第 108 行的 C:\xampp\htdocs\PhpstormProjects\api\db\mysqli.php 中已弃用

然后我删除了代码get_magic_quotes_gpc(),最后我的邮递员工作了。任何人都知道如何让邮递员忽略 PHP Deprecated 警告?我曾尝试在 error_reporting 中关闭 Deprecated 但它不起作用。

0 投票
3 回答
1215 浏览

php - ArrayObject 在 PHP 7.4 中不能与 end() 一起使用

在迁移到 PHP 7.4 时,我必须处理一些数组函数的不同行为,例如reset()ArrayObjectcurrent()end()有关 ArrayObject。以下示例产生不同的输出:

使用php 7.4的输出是:

在 7.4 之前的 PHP 版本上,输出如下:

Aend($array->getArrayCopy())会产生通知,但如果与变量一起使用,则可能是一种解决方法。

有没有办法模仿orend()的行为?ArrayObject 可能非常大,迭代到最后可能不是最佳解决方案。ArrayObjectArrayIterator

0 投票
0 回答
331 浏览

nginx - recv() 502 bad gateway -Nginx +PHP7.4-fpm, Google Cloud ubuntu 实例

我在 php7.4-fpm 上遇到了 502 bad gateway 同样的问题:

我在谷歌云虚拟机实例 nginx env 上运行这个服务器。请让我知道如何解决此问题。谢谢

0 投票
5 回答
50588 浏览

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

当我尝试向数据库提交发布请求时遇到问题。有趣的是,该错误仅在我使用 PHP 7.4.2 版本时发生。在 PHP 7.3.9 版本中一切正常。我正在使用 Laravel 6.17。

Laravel 什么时候解决这个问题?

这是我的堆栈跟踪,当错误出现时。

问候

0 投票
1 回答
712 浏览

php - 在 PHP7.4 中使用 CURLFile 上传文件失败

我查询了一个上传文件的 API,但是当我使用 PHP7.4 发布时没有上传文件,但是,它适用于 PHP7.3。

这是我的代码片段:

因此,上传函数接受一个多维值数组,包括索引为“文件”的文件数组。它遍历文件,创建 CURLFile 对象,然后将它们与其余数据一起发布到 API。

使用 PHP7.4,API 服务器上的全局变量 $_REQUEST 和 $_FILES 始终为空。在 PHP7.3 中,这些变量按预期填充了发送的数据。

https://www.php.net/manual/en/migration74.new-features.php上它指出:

如果扩展是针对 libcurl >= 7.56.0 构建的,CURLFile 现在除了支持普通文件名之外还支持流包装器。

Libcurl 版本是 7.58。

已在此处提交了相关的错误报告https://bugs.php.net/bug.php?id=79013关于缺少 Content-Length 标头导致没有文件上传,但似乎 PHP 团队认为问题出在服务器上,而不是 PHP。

有谁知道如何使用 PHP7.4 上传文件?

0 投票
2 回答
97 浏览

php - 如果声明了stricttype=1,是否需要空条件?

我在 PHP 中有类方法,声明了严格类型,它的第一个参数是 XMLWriter(应该生成 XML)。我想知道我是否需要检查它的空条件,或者 PHP 解释甚至检查空指针?我以前每次都这样做,但是 PHP7 和严格类型需要它吗?

谢谢

0 投票
3 回答
618 浏览

php - 如何在 foreach 循环之前/之后触发代码,只有在 PHP 7.4+ 中以一种有效的方式输入这个循环?

这有点类似于问题:如何确定 foreach 循环中的第一次和最后一次迭代?,但是,这个 +10 岁的问题非常有array针对性,并且没有一个答案与可以循环许多不同类型的事实兼容。

给定一个可以在 PHP >= 7.4中迭代PDOStatement的东西(数组、迭代器、生成器、DatePeriod...、对象属性等)的循环,我们如何以有效的方式触发需要在循环,但仅在进入循环的情况下

一个典型的用例可能是生成 HTML 列表:

<ul>并且只有在存在某些元素时才</ul>必须打印。

这些是我到目前为止发现的约束:

  1. empty(): 不能用于生成器/迭代器
  2. each(): 已弃用。
  3. iterator_to_array()打败了发电机的优势。
  4. 在循环内部和之后测试的布尔标志不被认为是有效的,因为它会导致在每次迭代时执行该测试,而不是在循环开始和结束时执行一次。
  5. 虽然在上面的示例中可以使用输出缓冲或字符串连接来生成输出,但它不适合循环不会产生任何输出的情况。(感谢@barmar的额外想法)

以下代码片段总结了我们可以迭代的许多不同类型foreach,它可以用作提供答案的开始:

这样的脚本应产生以下输出: