问题标签 [php-8.1]
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 - PHP8.1 - 如何让 imageavif() 工作?
我最近将我的 PHP 版本升级到 8.1-fpm,并将 Debian 升级到 Bullseye。我在某处读到 Bullseye 附带 AVIF 支持,但是当我尝试使用时imageavif()
,我收到以下错误:
我在服务器上运行了“php -i | grep AVIF”,它返回:
我怎么imageavif()
去上班?我错过了什么吗?
编辑:我运行了函数“print_r(gd_info());” 这是结果数组:
好像我有 GD,但没有设置它的 AVIF 支持。如何让它支持 AVIF?
另外,我目前正在使用imagewebp()
,该功能工作得很好。
编辑:感谢Nico Haase将我指向 Ondřej Surý 的 PHP 存储库的 GitHub 问题 - https://github.com/oerdnj/deb.sury.org/issues/1641
在此期间,我能做些什么来让imageavif()
工作不会太过分,还是最好只是等待?
phpunit - Phpunit 无法识别我的项目命名空间和类名
最近,我认识到该项目opis/closure
正面临着serialization
php 已弃用解决方案的问题8.1.1
。因此,我创建了一个分支并尝试解决问题,在解决问题时,我尝试使用phpunit
. 但我有一些错误如下所示。您能否检查一下并反馈我如何解决这些问题:
标题 | 描述 |
---|---|
操作系统 | 麦金塔 |
PHP版本: | PHP 8.1.1 (cli) (built: Dec 17 2021 23:49:52) (NTS) 版权所有 (c) The PHP Group Zend Engine v4.1.1, 版权所有 (c) Zend Technologies |
PHP单元版本: | Sebastian Bergmann 和贡献者的 PHPUnit 9.5.10。 |
项目 Git 存储库: | https://github.com/rhashnull/closure(我的叉子) |
错误信息:
phpunit.xml
作曲家.json
特别感谢您的关注。
php - 作曲家和 laravel 7 不适用于 php 8.1
今天我将 xampp 中的 php 更新为 8.1.0,之后所有 Laravel 项目都停止在 localhost 中。
所以,在将 composer.json 从更新到
在运行 composer update 或任何 composer 命令后,我看到 composer 有这样的问题:
我该如何解决这个问题,因为作曲家有错误,我的所有项目都停止了。
php - 枚举方法匹配“默认”
我想知道是否有比我在 PHP 文档中找到的更丰富的“定义默认”匹配方式。以下来自https://www.php.net/manual/en/language.enumerations.methods.php
上面不是证明我为什么要问我在问什么的最好例子,还想不出更好的例子,但是为了这个问题,想象一下有 10 套西装,9 套黑色和1个红色。看起来我必须在“黑色”的颜色匹配函数中重复 9 个案例......我希望(并在此处询问语法是否存在)有一种方法可以说“默认是 '黑色' ”并且只使用“红色”来表示我明确地说是“红色”的那个。有点像我在 switch 语句中的表现。PHP 枚举是否提供这样的语法?
php - 三元表达式中的枚举类
枚举是最近引入 PHP 的。我正在一个 laravel 项目中尝试它们。我在这里有我的枚举类:
我正在尝试创建一个警报类,它将采用构造函数中的枚举来设置警报的严重性,这将决定它呈现给用户的颜色。这是那个类:
此警报将在使用 Laravel Livewire 和刀片组件构建的登录表单中使用:
当我来显示登录表单时,出现以下错误:
Cannot instantiate enum App\Enums\AlertType (View: /resources/views/livewire/forms/login.blade.php)
我认为我在 Alert 组件中的枚举使用有问题,但我不确定在哪里。谁能指出我正确的方向。我已经查看了枚举的 rfc,但我看不到任何明显的我做错的事情
codeigniter - Codeigniter4:路由转到错误的路由
在我的 codeigniter4 应用程序中,我在路由上遇到了奇怪的问题,
在路由配置中,我有这样的组路由
在视图文件中
当我点击提交按钮时,路线是前往admin/dashboard
路线而不是customer/create
路线
我的路线配置如下
php - 将 null 传递给不可为空的内部函数参数 - 将现有代码库更新到 php 8.1
我刚刚开始升级我的代码以兼容 php 8.1。我有很多代码段,其中我将潜在的空值传递给内部函数。
其中 $row 来自可能具有空值的源(例如查询)。
我正在寻找处理升级此代码的最简单、最省时的方法,例如修复可以进行全局搜索和替换的地方。似乎将我传递给内部函数的变量进行类型转换可以在不改变功能的情况下工作。
除了以这种方式编码的道德方面之外,这种内部功能的方法是否存在问题?有没有更好的方法(除了完全重写代码和以不同的方式处理空值)?我更喜欢这个向后兼容 v7.4 的解决方案,尽管我可能会接受 8.0 的兼容性。
我知道我的用户定义函数还有其他选择。
xampp - Oci 在 Win10 + Xampp 8.1.1 + oci8_19 + OraClient32bit 上不起作用
从 Xampp 7.x 升级到 8.1.1(都是 64 位)和从 Oracle 12c 客户端升级到 Oracle 19c(都是 32 位)
在php.ini中安装并启用oci8_19后,我就可以启动和使用appache了。但它不会加载 xampp 安装附带的 php_oci8_19.dll:
depister php_oci8_19.dll 给出:
所以我认为我没有错过任何依赖项。oracle 客户端的 bin 目录也在我的路径上。尝试了我能找到的提示:将 dll 复制到 \Windows\System32 将 ORACLE_HOME 设置为 oracle 客户端 bin 目录。但这一切都没有帮助
试图安装另一个oci。据我所知,正确版本的 oci8 (3.2.1) 没有 dll 下载。所以我必须用 PEAR 安装它。但是 PEAR 似乎被破坏和贬低了,我无法让它工作。安装了PEAR 1.10.13,应该是最新的版本,但是找不到oci8。
在此之后,我尝试了具有 dll 下载的 oci8 的最新版本 3.0.1。但也有了这个 dll,我得到了同样的 appache/php 错误。
有谁知道如何让 xampp 8.1 在 Windows 上与 oci/oracle 19 一起使用?
php - __toString() 方法的 PHP 8.1.1 问题 - 如果在声明类本身之前创建实例,则会导致找不到类
从 PHP 7.3 升级到 8.1.1 后我遇到了一个问题 当然还有很多工作要做,但这有点奇怪。此示例不适用于我的错误致命错误:
未捕获的错误:在 C:\xampp81\htdocs\helpdesk811\test81\index.php:2 中找不到类“TestC”堆栈跟踪:#0 {main} 在 C:\xampp81\htdocs\helpdesk811\test81\index.php 中抛出在第 2 行
如果我稍后定义类并创建实例,它可以工作,但我无法找到任何有关此行为的文档。静态方法(公共静态函数 foo(){echo "bar";})也是如此。
我尝试了 3v4l.org 沙箱,它适用于 >5.0 && <8.0 的版本