问题标签 [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.
php - PHP 类型化属性批量声明不能将 null 分配给可为空的字段
我在违反直觉的错误/属性上有盖章。
有人可以向我解释为什么第二行不起作用。
PHP 版本 7.4.2。
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,它不会预加载供应商文件,而是仅在请求类或函数时才加载它们?
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 但它不起作用。
php - ArrayObject 在 PHP 7.4 中不能与 end() 一起使用
在迁移到 PHP 7.4 时,我必须处理一些数组函数的不同行为,例如reset()
ArrayObjectcurrent()
或end()
有关 ArrayObject。以下示例产生不同的输出:
使用php 7.4的输出是:
在 7.4 之前的 PHP 版本上,输出如下:
Aend($array->getArrayCopy())
会产生通知,但如果与变量一起使用,则可能是一种解决方法。
有没有办法模仿orend()
的行为?ArrayObject 可能非常大,迭代到最后可能不是最佳解决方案。ArrayObject
ArrayIterator
nginx - recv() 502 bad gateway -Nginx +PHP7.4-fpm, Google Cloud ubuntu 实例
我在 php7.4-fpm 上遇到了 502 bad gateway 同样的问题:
我在谷歌云虚拟机实例 nginx env 上运行这个服务器。请让我知道如何解决此问题。谢谢
php - Laravel - 尝试访问 int 类型值的数组偏移量
当我尝试向数据库提交发布请求时遇到问题。有趣的是,该错误仅在我使用 PHP 7.4.2 版本时发生。在 PHP 7.3.9 版本中一切正常。我正在使用 Laravel 6.17。
Laravel 什么时候解决这个问题?
这是我的堆栈跟踪,当错误出现时。
问候
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 上传文件?
php - 如果声明了stricttype=1,是否需要空条件?
我在 PHP 中有类方法,声明了严格类型,它的第一个参数是 XMLWriter(应该生成 XML)。我想知道我是否需要检查它的空条件,或者 PHP 解释甚至检查空指针?我以前每次都这样做,但是 PHP7 和严格类型需要它吗?
谢谢
php - 如何在 foreach 循环之前/之后触发代码,只有在 PHP 7.4+ 中以一种有效的方式输入这个循环?
这有点类似于问题:如何确定 foreach 循环中的第一次和最后一次迭代?,但是,这个 +10 岁的问题非常有array
针对性,并且没有一个答案与可以循环许多不同类型的事实兼容。
给定一个可以在 PHP >= 7.4中迭代PDOStatement
的东西(数组、迭代器、生成器、DatePeriod
...、对象属性等)的循环,我们如何以有效的方式触发需要在循环,但仅在进入循环的情况下?
一个典型的用例可能是生成 HTML 列表:
<ul>
并且只有在存在某些元素时才</ul>
必须打印。
这些是我到目前为止发现的约束:
empty()
: 不能用于生成器/迭代器。each()
: 已弃用。iterator_to_array()
打败了发电机的优势。- 在循环内部和之后测试的布尔标志不被认为是有效的,因为它会导致在每次迭代时执行该测试,而不是在循环开始和结束时执行一次。
- 虽然在上面的示例中可以使用输出缓冲或字符串连接来生成输出,但它不适合循环不会产生任何输出的情况。(感谢@barmar的额外想法)
以下代码片段总结了我们可以迭代的许多不同类型foreach
,它可以用作提供答案的开始:
这样的脚本应产生以下输出: