问题标签 [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 投票
1 回答
106 浏览

php - 允许经过身份验证的用户仅查看他们的数据

现在我有身份验证设置,但是当经过身份验证的用户创建新数据时,任何经过身份验证的用户都可以看到该数据并对其进行操作。我想让每个用户只能看到他们创建的数据。我是 laravel 和 php 的新手,所以我真的不知道如何设置它!

如果需要,我可以分享任何代码或更多详细信息,请告诉我!

谢谢

0 投票
0 回答
783 浏览

php - PHP 内置网络服务器不提供任何资产

我正在使用 Laravel 5.6 开发一个小型网络应用程序。我最近将 Laravel 升级到 5.6,因此也将 PHP 更新到 7.2.3 版本,因为 php7.1 是 Laravel 的要求。

我正在 Windows 10 机器上开发。

为了测试,我使用了 php 内置的网络服务器。我要么使用 Laravel 快捷方式启动服务器php artisan serve,要么直接调用php -S localhost:8000 -t public命令,结果是一样的。

由于我更新了 php,我无法通过浏览器访问任何资产(css、js)。

刀片文件:

在 Chrome 中输出:

laravel 项目的文件夹结构为:

我无法search.css通过输入访问文件http://localhost:8000/css/search.css,服务器日志127.0.0.1:52980 [404]: /css/search.css - No such file or directory

该文件在正确的位置,并且生成的 url 也正确。事实上,我没有改变任何东西,并且使用旧的 php 版本它可以工作。但当然,我仔细检查了十几次。controller.php用几行代码验证我的路径:

结果是: string(91) "C:\Users\me\Documents\LaravelProject\public\css\search.css" bool(true)

将应用程序部署到 AWS EB 环境即可。所以我猜,内置的网络服务器有问题。

任何人都可以想象,有什么问题吗?小型网络服务器在开发过程中当然非常方便。

0 投票
1 回答
2551 浏览

php - 并行运行 PHP5.6 和 PHP7.2 - 切换到 5.6(仅适用于 apache2)不起作用

按照本教程在 php 版本之间切换:(7.2 和 5.6):

http://mehedi.info/2017/06/07/use-php-5-6-php-7-0-alongside-one-another-ubuntu/

从 php5.6 到 php7.2:

从 php7.2 到 php5.6:

sudo a2dismod php7.2 ; sudo a2enmod php5.6 ; sudo service apache2 restart在终端中运行时出现此错误:

模块 php7.2 已禁用 考虑 php5.6 的依赖 mpm_prefork:考虑冲突 mpm_prefork 的 mpm_event:考虑 mpm_prefork 的冲突 mpm_worker:模块 mpm_prefork 已启用 考虑 php5.6 的冲突 php5:模块 php5.6 已启用 apache2.service 的作业失败因为控制过程以错误代码退出。有关详细信息,请参阅“systemctl status apache2.service”和“journalctl -xe”。

是我从中得到的systemctl status apache2.service

这是来自systemctl status apache2.service

我已经用干净的新操作系统(虚拟机)测试了确切的过程,并得到了完全相同的错误。

0 投票
0 回答
185 浏览

php - Symfony 测试失败

我想为 Symfony 4 贡献一些代码。因此我按照指南(https://symfony.com/doc/current/contributing/code/patches.html),分叉了 Symfony 并调用了测试。该指南说“PHP 5.5.9 或更高版本”,但是由于 PHP 7 新语法,测试失败。所以我切换到在 Windows 7 x64 上运行的 PHP 7.2。

在我接触任何代码之前运行时php ./phpunit symfony,很多测试都失败了。大多数测试失败并显示“其他弃用通知”消息:

最后它说,“好的但不完整,......”

还有“真正的”错误:

或在这里:

或在这里:

0 投票
1 回答
5883 浏览

php - 警告:count():必须是实现 Countable 的数组或对象

我已迁移到使用 PHP v7(来自我的 PHP v5.4)的新服务器,现在我的网站上显示错误。

这是返回错误的代码行:

我该如何解决这个问题?

0 投票
3 回答
19042 浏览

php - 安装mongoDB驱动php 7.2.3

我正在尝试为 PHP 7.2.3 x86 安装 mongoDB 驱动程序。我在这里安装了 PHP 7.2 非线程安全驱动程序:https ://pecl.php.net/package/mongodb/1.4.2/windows

我已将 mongodb.dll 文件放在 php/ext 中,并将;extension=mongodbphp.init 文件放在“动态扩展”下。

当我去我的 phpinfo() 时,mongo 没有出现。运行 composer require jenssegers/mongodb 命令只会说:“无法加载动态库 'mongodb'...”

我该如何解决?(我正在使用 xampp)

0 投票
0 回答
2136 浏览

php-7 - 安装 intl IS 时,“请安装“intl”扩展以获得完整的本地化功能”

ubuntu 16.04 中的 Symfony 2.8 项目

我得到了这个例外:

在渲染模板期间抛出异常(“The Symfony\Component\Intl\DateFormatter\IntlDateFormatter::__construct() 方法的参数 $locale value 'es' 行为未实现。仅支持语言环境“en”。请安装“intl”扩展以获得完整的本地化功能。”)。

好的,但是我已经安装了 intl 扩展:

也许是没有价值的 default_locale 问题?我也安装了 libicu,所以不知道是什么问题。

它发生在 php7.0、php7.1 和 php7.2

0 投票
1 回答
577 浏览

mysql - Cloud SQL 比本地主机服务器稍慢

我很难理解为什么 Cloud SQL 比我的本地 MySQL 服务器稍微慢一些。

我可以接受从配置到配置可能会发生一些变化,但是......

在 localhost 中,只需 240 毫秒即可完成一个查询,该查询仅返回表中的所有记录及其关系(只有 90 条记录),而在 Cloud SQL 中则需要近30 秒。它就像 28kb 的数据。

我在 Laravel 5.5 中使用 PHP。根据所有 GCP 文档,我拥有所需的所有配置。

我不认为这是一个配额问题。

使用第二代 Cloud SQL 并从具有自动缩放功能的 App Engine flex 环境连接。

我确实将 Cloud SQL 实例的服务器规格提高到了 1.7 GB RAM。我不认为这是与服务器性能相关的问题...

谢谢。


编辑

这令人困惑。

我正在调试正在执行的原始 SQL 字符串,当我使用 DD 进行调试时,我正在阻止 JSON 响应,它只需要 1 秒。由于某种我无法理解的原因,好多了。

这是结局更快的一个

这是一个只需要同样长时间的

如您所见,唯一的区别是是否达到了回报。


编辑 2

发现问题

事实证明,当返回 JSON 响应时,Eloquent 模型会处理模型的附加程序,这些附加程序会向另一个 API REST 发出一些请求,并且它会为结果集中的每个模型执行此操作。

在 localhost 中,相同的操作只是在发出请求之前返回 null。所以,这是我的问题。

与 MySQL、GCP、Laravel 或 PHP 无关。只是我自己的愚蠢。

非常感谢您花时间阅读这个荒谬的问题。我最诚挚的歉意。

0 投票
3 回答
16747 浏览

php - count() 发出 E_WARNING

在 PHP 7.2 之前,count()在标量值或不可数对象上使用会返回1or 0

例如:https ://3v4l.org/tGRDE

PHP 7.2+ 的更新中,如上所示使用count()将发出警告消息。

现在,当尝试 count() 不可数类型(这包括 sizeof() 别名函数)时,将发出E_WARNING

警告:count():参数必须是实现 Countable [sic]的数组或对象

结果,许多流行的框架将提升E_WARNING并抛出异常。

[ErrorException] count():参数必须是数组或实现了Countable的对象

PHP 开发人员还评论了错误提升行为。

显示警告或将其转换为更严重的错误/异常的环境会受到影响,但这只会引起对代码中错误的注意。

如何count()在 PHP 7.2+ 中实现以前的行为,即不发出E_WARNING、不修改错误报告设置且不使用@count()

0 投票
2 回答
1249 浏览

php - Laravel 5.6 + cPanel + Composer 错误:使用错误的 PHP 即使安装了 7.2

我正在尝试在 cPanel 沙箱上安装 Laravel 5.6,并且在 composer 尝试使用 PHP 5.6 时出现奇怪的行为,即使设置了 7.2。以下是详细信息:

该命令which php不返回任何内容。但是当我这样做时,alias我得到以下信息:

如果我运行 php -v 我会看到

我将假设它正在工作。如您所知,我在 cPanel 上运行 Laravel 的经验很少,但我离题了。

这是错误:

现在,我确实找到了一个线程,上面写着要向 composer.json 添加一个平台:

这确实让我安装了我的供应商软件包,但它显然不是一个解决方案,因为你只是在伪造平台(我认为)。当真正使用 php7 时,我在 null 合并运算符上收到以下错误,这是 php 7 的一个功能,因此它仍在尝试使用 php5.6。

补充说明:

我需要的 composer.json 如下:

关于如何解决这个问题的任何想法?