问题标签 [php-7.2]

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 投票
8 回答
47327 浏览

php - 沉默 PHP 7 中的“声明......应该兼容”警告

升级到 PHP 7 后,日志几乎因此类错误而窒息:

PHP Warning: Declaration of Example::do($a, $b, $c) should be compatible with ParentOfExample::do($c = null) in Example.php on line 22548

如何在 PHP 7 中使这些错误和只有这些错误静音?

  • 在 PHP 7 之前,它们是可以轻松处理E_STRICT的警告类型。现在它们只是简单的旧警告。由于我确实想了解其他警告,因此我不能完全关闭所有警告。

  • 我没有重写这些遗留 API 的心理能力,更不用说使用它们的所有软件了。猜猜看,没有人会为此付出代价。我一开始都没有开发它们,所以我不是罪魁祸首。(单元测试?十年前不流行。)

  • 我想尽可能避免任何类似的诡计func_get_args

  • 我真的不想降级到 PHP 5。

  • 我仍然想知道其他错误和警告。

有没有一种干净又好的方法来实现这一点?

0 投票
1 回答
1729 浏览

php - Bug with multiple connections to Interbase with php 7

It seems PHP 7 changed a bit the way to work with the Interbase module.

Same code on PHP 5.6 works flawlessly.

If you have one open link to an Interbase/Firebird database and you open another one to the same database the first link it's closed.

One example of code can be:

DB_xxx are defined variables with the users, password, ..... of the database.

The result it's the same if instead of ibase_pconnect we write ibase_connect

If you run that code you won't get nothing, and on the page log you will see something like:

If we remove the line with the $conx2 all will work perfectly.

On my php.ini I have this (exactly the same than on PHP 5.6):

Interbase module for php7 has a new option which it's generating this problem ?

0 投票
1 回答
1350 浏览

php - 为什么代码覆盖率报告在 php 7.2 上失败?

我在 travis-ci 上为 php 7.0 和 7.2 运行 php 构建矩阵。

https://travis-ci.org/uawcob/course-overrides/jobs/242630482

在 7.0 上,测试全部通过并且代码覆盖率生成良好。

php 7 截图通过了伟大的

在 7.2 上,您可以看到所有测试都运行并通过了相同的测试,但是生成代码覆盖率报告会引发异常,从而导致整个构建失败

截图 php 7.2 代码覆盖异常

为什么是这样?

后代的完整错误堆栈:

0 投票
2 回答
3626 浏览

oop - PHP7 并支持多重继承?

我们知道 PHP5 或更高版本允许 OOP 但不支持像 C++ 那样的多重继承 PHP7 是否支持多重继承?

0 投票
1 回答
899 浏览

php - 尝试从命名空间“WAYF”调用函数“openssl_pkey_get_private”

我收到此错误消息

尝试从命名空间“WAYF”调用函数“openssl_pkey_get_private”

我正在将 symfony 版本从 symfony2 升级到 symfony3,“WAYF”是我的捆绑包

因为我有一个类名“CustomLogin.php”

在那个类中,我声明了一个函数“function prepareparamsforjs(){}”和

在那个函数中,我用参数“$privatekey”和“$privatekeypass”调用“openssl_pkey_get_private()”函数来获取私钥

但我收到了上述错误消息。

谁能告诉我如何解决这个问题。

提前致谢!...

0 投票
1 回答
2691 浏览

php - 在 PHP 7.2 中使用 libsodium

在 PHP 7.2 中,libsodium 应该是 PHP 核心的一部分。是否需要文件中的任何条目php.ini才能使其工作,或者它应该开箱即用?

我正在尝试使用PHP 7.2.0beta2和类似sodium_version_string()sodium_compare未知的功能。我正在使用 PHP 泊坞窗 ( 7.2-rc-fpm )

以防万一 - 我没有安装任何 PECL 扩展,因为据我了解它不应该是必要的。

0 投票
1 回答
540 浏览

php - 为什么 php 在私有和受保护的属性名称中添加空字节?

我是 PHP 世界的新手,从php.net学习它。我知道,当将对象转换为数组时,当ClassName星号键 (*)附加到数组键中的私有和受保护属性名称之前,会在私有和受保护属性名称周围添加空字节。

但我的问题是,为什么php 添加空字节是什么原因?

谁能用简单易懂的语言说出来。

例子会有很大帮助。

谢谢

0 投票
1 回答
750 浏览

php - PHP7:在类被实例化之前不能调用/看到静态类函数

我有一个名为Error我自动加载的自定义类。在我的自定义类中,我有一个构造函数和一个像这样的单例 Get 函数:

在我的主包含中,我总是在核心逻辑之前准备了这个自定义类的单例:

但是,在 PHP 7 中,这给了我一个错误:

致命错误:未捕获的错误:调用未定义的方法 Error::getError()

你能帮我理解为什么这不再起作用了吗?我已经尝试过这个来检查是否正在加载 Error 类,并且它确实有效(并调用了构造函数):

除非我实例化了这个类,否则我不能以某种方式调用静态类函数。如果这真的是 php7 的变化,这将打破我的许多其他逻辑。

0 投票
1 回答
272 浏览

php - PHPUnit 5.7 到 6.4 升级 - 缺少扩展类

我正在尝试将我们的单元测试从 PHPUnit 5.7 升级到 6.4。主要修订改变了类的自动加载,我一直在更新我的基础测试类以使用新的类。

我们使用此处找到的 ArrayDataSet 的实现:

https://phpunit.de/manual/current/en/database.html(大约一半,您可以搜索“MyApp_DbUnit_ArrayDataSet”以到达正确的部分)。

文档仍然为此使用旧样式自动加载(例如 PHPUnit_Extensions_Database_DataSet_AbstractDataSet)引用类,这些已不再存在。而且我在任何地方都找不到这些课程,特别是:

PHPUnit_Extensions_Database_DataSet_AbstractDataSet PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData PHPUnit_Extensions_Database_DataSet_DefaultTable PHPUnit_Extensions_Database_DataSet_DefaultTableIterator

似乎 6.4 的整个扩展部分似乎都丢失了。我错过了什么吗?

编辑我应该提到我正在使用 6.4 phar

0 投票
1 回答
1459 浏览

lamp - 在谷歌计算云实例上升级/安装 php7

我正在尝试使用最新版本的 php 升级我的谷歌云计算实例。

它目前正在运行 debian9/php5/apache2/mysql14,我想把它带到 php7。

我已经尝试了所有简单的 apt-get update upgrade install php7 等,但没有找到任何软件包。

E: 找不到包php7.0

E: 通过正则表达式 'php7.0' 找不到任何包

E: 找不到包 libapache2-mod-php7.0

E: 通过正则表达式 'libapache2-mod-php7.0' 找不到任何包

E: 找不到包php7.0-mysql

E: 通过正则表达式 'php7.0-mysql' 找不到任何包

E: 找不到包 php-common

E: 找不到包 php7.0-cli

E: 通过正则表达式 'php7.0-cli' 找不到任何包

E: 找不到包php7.0-common

E: 通过正则表达式 'php7.0-common' 找不到任何包

E: 找不到包 php7.0-json

E: 通过正则表达式 'php7.0-json' 找不到任何包

E: 找不到包 php7.0-opcache

E: 通过正则表达式 'php7.0-opcache' 找不到任何包

E: 找不到包 php7.0-readline

E: 通过正则表达式 'php7.0-readline' 找不到任何包

我也试过 7.1 和 7.2 和同样的东西。理想情况下是最新版本的 php,但此时我会采取任何措施。

谢谢你的帮助!

ps 这将主要运行 WordPress 网站。