-
hasOne表示当前模型一条记录对应关联模型一条记录,如User→Profile;hasMany表示一对多,如Author→Article;均需在“拥有方”模型定义,参数顺序为关联类、外键、主键,TP6推荐用Profile::class和显式外键。
-
PHP文件上传安全关键在于切断执行路径:上传目录须置于Web根目录外,或在Web服务器层禁用脚本执行;必须用finfo_open(FILEINFO_MIME_TYPE)校验真实MIME,配合后缀白名单与文件名清理。
-
PHP8.4的Fiber已弃用,9.0彻底移除,须迁至原生async/await;FPM下调用Fiber::suspend()触发ZEND_MM_ASSERT是因内存上下文被强制销毁,非代码错误;替代方案是采用amphp/http-client或等待PHP9.0异步支持。
-
快速定位内存泄漏需用memory_get_usage(true)和memory_get_peak_usage(true)打点监测,避免array_merge复制、foreach值拷贝、PDO全量加载;大文件/数据应流式处理、分页查询、直接写磁盘;unset与gc_collect_cycles()配合可延缓OOM,__destruct和gc_disable()基本无效;CLI设memory_limit=-1不安全,须设合理上限并拆分子进程。
-
PHPSQLite3操作核心要点:变量插入必须用prepare()/execute()防SQL注入;open()需检查返回值防静默失败;批量插入须用事务或拼接多值提升性能,扩展功能基本不可用。
-
宝塔PM2管理器显示“启动失败”,但项目实际能访问,或反复提示“已在运行”却无法管理——根本原因往往不是代码问题,而是package.json里写的启动命令和PM2实际执行环境不匹配,加上PM2自身缓存残留导致状态错乱。PM2启动失败但日志里没报错?检查package.json的start脚本是否依赖shell特性宝塔PM2管理器底层调用的是非交互式shell(类似sh-c),不加载.bashrc或.zshrc,因此所有依赖环境变量、别名、npm全局
-
Yii不适合大数据分析场景,因其ActiveRecord面向OLTP设计,无法支撑千万行扫描、列式读取、谓词下推等OLAP需求;应绕过AR直连数仓(如ClickHouse),由Yii仅负责调度、元数据管理与接口封装。
-
Nginx需显式配置禁止访问.git等敏感目录,最简方式为location~/\.{denyall;},应置于server块顶层且在PHP处理规则之前,防止源码泄露。
-
Laravel队列任务静默丢失的五大容错方案:一、统一默认队列配置并显式指定;二、启用失败回调与重试机制;三、设置超时与内存限制防进程中断;四、验证延迟入队结果;五、用Supervisor守护进程并监控状态。
-
PHP8.0起GD函数强制使用GdImage对象而非resource,创建函数如imagecreatetruecolor()返回GdImage,类型错误触发TypeError;is_resource()失效,须用instanceof;输出函数首参均为GdImage;imagedestroy()软弃用,内存由引用计数自动管理;GdImage不可序列化。
-
phpEnv不直接管理SSL证书,多站点HTTPS共存需依Web服务器(Apache/Nginx)正确配置SNI与独立证书路径;Apache需为每个域名设独立<VirtualHost*:443>并指定证书,Nginx需在每个server块内完整配置ssl_certificate等参数,且路径须用正斜杠、证书名不含空格中文,修改后须验证并重载。
-
在phpEnv中应使用add_header添加响应头,且需配always参数;PHP响应头截断问题须通过调大fastcgi_buffer_size和fastcgi_buffers解决。
-
PHPtrait仅用于无继承关系类间复用方法逻辑,不可替代继承或封装核心业务;声明用trait关键字,使用必须use(非include),不触发自动加载;不能new、extends或implements;支持多use但需处理方法冲突(insteadof/as);$this指向宿主类实例但不可访问其private成员;适用场景限于通用工具方法或可插拔行为。
-
Laravel迁移是基于时间戳顺序执行的版本化脚本机制,非自动同步工具;必须用phpartisanmake:migration生成文件以确保时间戳唯一、类名匹配、框架预填正确,避免手动修改时间戳或文件名导致执行错乱。
-
10061错误在phpEnv下本质是mysqld进程未真正运行,需依次检查任务管理器有无mysqld.exe、mysql_start.bat是否闪退、data目录完整性、my.ini中bind-address与port配置、PHP扩展加载路径及DLL存在性、root用户认证插件兼容性,并查看.err日志定位闪退原因。