标签 php 下的文章

刚用 AI 写了个处理 YAML 的小工具,因为是 php 写的,直接用了 yaml 扩展。

一运行发现我本地的 php8.3 还没安装 yaml 扩展,虽然可以改成使用第三方包,但觉得还是安装一下试试。

执行 pecl install yaml,提示找不到 libyaml 包。

checking for yaml headers... not found
configure: error: Please install libyaml
ERROR: `/private/tmp/pear/temp/yaml/configure --with-php-config=/opt/homebrew/opt/php/bin/php-config --with-yaml' failed

- 阅读剩余部分 -

接上文。

上文中提到 composer install 遇到的报错其实有两个,第一个是 Redis 扩展的问题,第二个就是 php 版本问题。

我安装的依赖有个依赖还不支持 php 8.3,这时候其实只要升级这个依赖的版本问题应该就可以解决了。

但我还是想切换回 php8.1,因为我的 fpm 跑的还是 8.1,cli 里跑 8.3 其实并不 make sense。

- 阅读剩余部分 -

今天遇到一个问题,在使用 Symfony 6.x 框架的项目里,我没有使用框架自带的 Security 组件,而是自己实现了一个用户认证的土方法。

在我的方法中,当用户请求需要登录的接口时,会抛出一个自定义的异常 ApiNotAuthException,然后我在 ExceptionListener 监听器服务中捕获这个异常并封装我自己的返回值结构,最后将状态码强制改为 200(因为我不喜欢使用 HTTP 状态码来替代业务状态码)。

- 阅读剩余部分 -

基于 Monolog 构造了一个日志生成器。

需要根据情况区分日志渠道,场景是根据运行环境(fpm 和 cli)自动区分。

查了一下,可以使用 php_sapi_name 方法确定是否是 cli 环境:

public static function logger($alias = null): LoggerInterface
{
    if (empty($alias)) {
        $alias = php_sapi_name() === 'cli' ? 'cli' : 'fpm';
    }
    return self::initLogger($alias);
}

效果不错。

写在前面

发现很多人没有把 php 加进环境变量。(主要是 windows 用户,*nix 不会存在这个问题)

把你的 php.exe 的路径复制下来,比如我的就是 C:\dev\php5.4;,然后右击 我的电脑->属性->高级系统设置->高级->环境变量,把 C:\dev\php5.4; 添加进 path 即可。注意分号的使用,每个 path之间用分号隔开,注意是英文的分号,不是中文的分号。

- 阅读剩余部分 -

今天为了本地编译一个开源软件,用 homebrew 安装了 rustc,结果后来发现导致 php 命令报错。

dyld[16856]: Library not loaded: /opt/homebrew/opt/libavif/lib/libavif.15.dylib
  Referenced from: <87C1A268-34E4-396F-8BBC-D5591064E333> /opt/homebrew/Cellar/gd/2.3.3_5/lib/libgd.3.dylib
  Reason: tried: '/opt/homebrew/opt/libavif/lib/libavif.15.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/opt/libavif/lib/libavif.15.dylib' (no such file), '/opt/homebrew/opt/libavif/lib/libavif.15.dylib' (no such file), '/usr/local/lib/libavif.15.dylib' (no such file), '/usr/lib/libavif.15.dylib' (no such file, not in dyld cache), '/opt/homebrew/Cellar/libavif/1.0.1/lib/libavif.15.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/Cellar/libavif/1.0.1/lib/libavif.15.dylib' (no such file), '/opt/homebrew/Cellar/libavif/1.0.1/lib/libavif.15.dylib' (no such file), '/usr/local/lib/libavif.15.dylib' (no such file), '/usr/lib/libavif.15.dylib' (no such file, not in dyld cache)
Abort trap: 6

- 阅读剩余部分 -