-
首先确认PHP版本与扩展包名称匹配,再更新软件源并修复依赖,接着安装PHP开发工具及依赖库,必要时通过PECL手动安装扩展,最后检查php.ini配置并重启服务。
-
Git标签应严格使用vX.Y.Z格式并签名,确保Composer识别;GitHubActions需用ref前缀过滤PHP版本标签;Docker构建须通过CI提取主版本号传参,避免硬编码。
-
phpEnv启用Nginx后存在严重安全风险:autoindex默认开启、root/alias混用、未过滤../导致目录遍历漏洞;须关闭autoindex、禁用敏感路径、统一用root+try_files、设置cgi.fix_pathinfo=0并校验fastcgi_script_name。
-
应使用is_array($arr)&&!empty($arr)判断非空数组,避免empty()误判;array_merge()重置数字键而+左优先;遍历时修改数组需用array_filter或延后操作;json_decode保键类型宜用stdClass或加前缀处理。
-
ZipArchive扩展依赖libzip库,CentOS7等系统自带libzip版本过低(如0.10.x),PHP7.4+要求≥0.11且排除问题版本;需卸载旧包、从libzip.org下载1.9.2源码编译,并通过PKG_CONFIG_PATH或--with-libzip=显式指定路径确保PHPconfigure正确识别。
-
phpEnv默认不自动处理HTTP→HTTPS跳转,需在Nginx模式下手动添加独立的80端口server块并配置return301规则,确保server_name与实际域名一致、SSL证书已加载,且修改后必须点击面板“重载Nginx”生效。
-
应使用LaravelPipeline机制解耦多阶段请求处理:一、手动构建Pipeline处理非HTTP请求;二、复用中间件机制处理HTTP请求;三、通过容器解析类支持依赖注入;四、用闭包实现无依赖轻量逻辑;五、返回响应中断流程。
-
PHP没有MAIL常量,所有mail相关配置均为php.ini中的INI设置,非语言级常量;SMTP等是配置键名,PHPMailer常量属第三方库,与原生mail()无关。
-
Yii框架无内置“延迟加载”,但可通过defer/async控制JS加载、AssetBundle批量配置jsOptions、AR预加载with()及动态插入script实现非关键资源不阻塞首屏。
-
CheckSpelling是Apachemod_speling模块提供的URL拼写纠错功能,多端口下易失效因其仅在各<VirtualHost>块内单独启用才生效,未逐端口配置则对应端口不触发纠错。
-
phpEnv实为phpStudy旧称,其安装Swoole本质是在Windows版phpStudy中手动匹配DLL:需按PHP版本、TS/NTS、架构下载对应php_swoole.dll,放入ext目录,php.ini中添加extension=php_swoole,重启服务并分CLI/Web双环境验证。
-
PHP类属性默认值仅支持标量、数组、null和静态表达式,如null、123、"hello"、[1,2]、self::STATUS_ACTIVE;不支持new、函数调用等动态值。
-
$_ENV默认为空,因php.ini的variables_order默认不含E;启用需设为"EGPCS"并重启服务;getenv()更可靠,直接读进程环境变量,且Docker/K8s中同样有效。
-
ThinkPHP多数据库连接关键在键名、type、调用方式三者严格对齐:键名须小写+下划线(如'mysql_read',禁用点号或大写),每个连接必须显式声明'type'(如'mysql'),Db::connect()参数必须为配置键名而非数据库名或模型名,传错即抛异常。
-
需在模型中设置protected$createTime='created_at';protected$updateTime='updated_at';并确保protected$autoWriteTimestamp=true;同时字段必须在$schema中声明或表结构存在,否则时间戳不会写入。