问题标签 [php-7]

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 投票
4 回答
2319 浏览

php - 变量处理顺序:PHP 7 中的变化

随着新的 PHP 7.0.0 的发布,我有点担心所谓的“变量”的评估顺序的变化。

此页面上,在“变量处理的更改”下,显示了一个表格,其中包含表达式示例及其在 PHP 5 和 PHP 7 中的处理顺序。列出的四个表达式是:

给定以下字符串和数组:

表中的第一个表达式在$$foo['bar']['baz']PHP 5 中被解释为一个名为 in 的变量的值$foo['bar']['baz'],因此是 的值$qux,即 'quux'

但是,据我了解,在 PHP 7 中,相同的表达式将被解释为名为 in 的值的变量$foo,因此我希望 PHP 通知用于“数组到字符串转换”,因为$foo它是一个数组。

表中的其他示例似乎是同一主题的变体。

当然我很好奇为什么在 PHP 7 中改变了这一点(具体来说,为什么这个改变比向后兼容更重要),但是,这对于 SO 来说不是一个合适的问题。我的问题更实际:

应对这种不兼容性的推荐方法是什么?

当然,在有问题的表达式中添加花括号会有所帮助(${$foo['bar']['baz']}、、$foo->{$bar['baz']}和) $foo->{$bar['baz']}()Foo::{$bar['baz']}()但这非常麻烦,要遍历大量旧代码,搜索相对较少的出现...

否则,这四个示例是唯一可能的语法变化吗?也就是说,我可以创建一个正则表达式和grep所有有问题的代码吗?可能存在哪些其他变体?

0 投票
1 回答
5079 浏览

php - PHP7 中的 foreach 更改

foreach默认情况下,在 PHP7 中,按值迭代时,根据:http ://php.net/manual/en/migration70.incompatible.php 对数组的副本进行操作

它是否仅在对数组或值进行更改时才懒惰地创建副本,或者它总是会创建副本并且本质上使循环引用成为性能优化?

另外,对象数组是否仍然循环/给你对象的引用?还是他们实际上也会为 对象创建副本foreach并按值返回对象?

0 投票
1 回答
63 浏览

php - php perl 跨平台编码器/解码器

以前是 perl 编码器

可以通过 php 函数很好地解密

唉,mcrypt_cbc 现在不仅被弃用了,它也完全从 php7 中消失了。

perl 中是否有标准的新 php 解码器 mcrypt_encrypt 可以使用的推荐编码器?

为了我的目的,我不需要超级秘密。合理的秘密是可以的。没有生死攸关的秘密。如果解码需要半个小时,那已经足够了。理想情况下,我会使用任何规范的安全编码器解码器(当然,只要它们兼容)。

建议表示赞赏。

0 投票
1 回答
4180 浏览

php - PHP7 认证

随着 PHP 7 的发布,我应该申请 PHP 5 认证还是更好地等待,直到 PHP 7 认证发布/宣布?Zend 对此认证有什么计划?

0 投票
4 回答
15145 浏览

php - PHP7 + Symfony 2.8,无法写入会话数据

我自己编译了php7(974f6c2a705)。如果我使用 symfony 运行 php7 + php-fpm + nginx,我会收到此错误:

(使用 snc redis 包进行会话:)

(使用本机会话支持:)

问题似乎与 symfony 相关,因为 php 具有对该文件夹的读/写权限。

如果我只运行这段代码,它就可以工作:

为什么 symfony 无法编写会话的任何建议或想法?

0 投票
1 回答
416 浏览

apache - PHP7 安装破坏了我的本地主机

我在本地编译和构建了 PHP7。php -v输出我想要的所有美丽信息。不过,我完全无法将它加载到 apache 中。configure\make 过程主要是我自己和 SO,但是为了将其加载到 Apache,我按照此博客中的步骤操作,从

完成后,您需要设置 Apache 以使用新版本的 PHP。以下行将禁用原始 PHP5 版本并启用新的 PHP7 版本

这就是事情变得糟糕的地方。真的,它所完成的只是完全破坏了本地的 php。由于某种原因,我什至无法成功回滚我的配置。phpinfo() 只显示源代码,因此根本不处理 php。

现在的情况: PHP 已经死了。

我想去的地方: Apache2 加载 PHP7

帮助,有人吗?非常感激!

0 投票
14 回答
60115 浏览

php - PHP 7 用户会话问题 - 无法初始化存储模块

在 PHP 7.0 中使用各种 PHP 框架会话驱动程序时存在错误。我最初在使用 CodeIgniter 数据库驱动程序时遇到了这个问题,并认为这是一个 CodeIgniter 问题,但后来在多个会话驱动程序和多个框架上遇到了这个问题。在这一点上,我已经安全地得出结论,会话驱动程序的类型无关紧要 - 看似随机,应用程序将崩溃并且日志(我已经尝试过 Apache 和 php-fpm + nginx)填充以下内容:

PHP 致命错误:session_start():无法初始化存储模块:用户(路径:[无论我在 php.ini 路径中有什么])

我使用的驱动程序不使用 php.ini 中设置的值,无论我是否将 session.save_handler 设置为 php.ini 中的文件、redis 等,也无论我设置的路径如何(如果是 redis,则为 Redis 服务器,完全-启用文件的可写文件夹)发生错误。除非在框架外的 php 文件中调用本机“session_start()”,否则不应点击此处的路径。此外,在框架之外调用“session_start()”也可以正常工作......所以很明显 PHP 可以访问该路径。就好像在某个时候,会话驱动程序变成了框架驱动程序和 php.ini 中设置的任何内容的混合体。错误消息总是有 session.save_handler 的“用户”,所以很明显这不是从 php.ini 中提取的……但路径是。为什么会发生这种情况?这是在您体验之前很难描述的问题之一......而且很难重现,因为即使在数百次会话中一切似乎都可以正常工作(直到它突然停止工作)。重新启动 Apache 也不能解决问题 - 这里有很多问题,我最终只是重新启动机器以避免停机。显然,PHP 7 机器现在将从负载均衡器轮换中退出......但我希望现在能解决问题。重新启动 Apache 也不能解决问题 - 这里有很多问题,我最终只是重新启动机器以避免停机。显然,PHP 7 机器现在将从负载均衡器轮换中退出......但我希望现在能解决问题。重新启动 Apache 也不能解决问题 - 这里有很多问题,我最终只是重新启动机器以避免停机。显然,PHP 7 机器现在将从负载均衡器轮换中退出......但我希望现在能解决问题。

我遇到了我自己编译的 PHP 7.0 RC5、RC6 和 RC8 以及 Ubuntu 15.10 Wily (7.0.0-2+deb.sury.org~wily+1) 上最新的 Ondřej Surý PPA 的问题。我在 CodeIgniter 和 Symfony 上遇到过这个问题,并且无论框架中使用的驱动程序类型(文件、数据库、redis)或 php.ini 中设置的 session.save_handler (同样应该无关紧要)都遇到过这个问题在这里,但只是认为应该提及)。我不断尝试组合并在野外扔东西,这个问题每次都会发生(有时需要 12 多个小时,具体取决于网站的流量)。

感谢您的任何帮助,您可以提供!我愿意接受建议,并愿意在这一点上尝试任何事情。

0 投票
2 回答
6464 浏览

windows - PHP7 Curl 和 OpenSSL 扩展不适用于 Windows 上的 Apache 2 处理程序

在 Apache2.2 模块处理程序模式下从 PHP7 初始化 curl 和 openssl 扩展时遇到问题。

如果我使用 FCGI 模式,PHP7 中的 curl 和 openssl 工作得很好,我可以在 phpinfo 页面中看到它们。

我检查了 curl 和 openssl php 扩展的依赖关系,发现它们动态链接到 libssh2.dll。然后尝试将 libssh2.dll 添加到路径,系统路径,但这仍然不起作用。

所以猜测 Apache2.2 可能是一个问题,因为 PHP7 的 curl 和 openssl 扩展在 FCGI 模式下启动时工作正常。有没有办法用 ollydbg 或 windbg 来检查?

0 投票
2 回答
1904 浏览

php - Vagrant 和 php7 安装失败

今天我想从头开始安装php7。我看了一些教程,现在我的 vagrantfile 看起来像:

bootstrap.sh:

我使用 vagrant 版本 1.7.4 和 virtual box 版本 5.0.10。

我在编译过程中遇到错误。我做错了什么?

编辑:我逐步测试了 vagrant ssh 中的所有命令。直到make一切正常,但make test导致此输出: 在此处输入图像描述

0 投票
6 回答
17929 浏览

php - PHP XDEBUG 未启用

无法启用 XDEBUG。任何帮助或检查它是否已启用且未反映?我在 PHP7 上并且正在使用 Xdebug 2.4.0rc2。PHP.INI 设置如下:

无法启用它。这些步骤是正确的,但也没有显示在 phpinfo() 中。