-
.travis.yml必须置于项目根目录且与composer.json同级,PHP版本需用php字段明确声明(如"8.1"),依赖扩展需通过addons启用,缓存问题优先禁用验证,测试命令必须放在script字段,PHP8.2+需配置convertDeprecationsToExceptions="false",并建议迁移到GitHubActions。
-
防止Laravel缓存击穿有五种方法:一、互斥锁控制回源;二、热点Key永不过期+异步更新;三、缓存预热+失效时间随机化;四、空值缓存兜底;五、RedLock实现分布式强一致锁。
-
mysqli连非标端口必须用127.0.0.1作$host并单独传int型$port参数,不可在host中拼接冒号端口;PDO则需在DSN中严格按mysql:host=;port=;dbname=顺序写入。
-
MySQL8.0升级不能直接覆盖目录,必须确认真实版本、解压独立ZIP包、重写my.ini(指定旧data路径和mysql_native_password插件)、初始化并注册为mysqla服务,且需删除data目录下的auto.cnf。
-
ThinkPHP不提供开箱即用的数据变更审计功能,必须显式查询原始快照(如find($id))与新数据比对,统一序列化(如json_encode+JSON_SORT_KEYS)、过滤无关字段、归一化类型后才可生成可靠diff。
-
先开启错误报告与日志,确认请求数据接收正确,通过日志跟踪执行流程,结合Xdebug、Postman等工具逐步验证,最后用最小环境复现问题,精准定位PHP接口故障。
-
本地作用域是需显式调用的普通方法,命名须以scope开头加驼峰式,调用时转为短横线;必须返回$query实例,参数需手动校验,不可依赖request或auth,且仅添加查询条件,不影响软删除等全局行为。
-
Apache启动失败最常见原因是80或443端口被占用,需同步修改httpd.conf中的Listen和ServerName(如改为8080和localhost:8080),并同步更新httpd-ssl.conf中三处443为8443,改后须以管理员身份重启服务。
-
PHP8.3中不存在“NewInInitializers_PHP8.3”这一函数或配置项,它只是对PHP8.1引入的new初始化器特性的误称;该特性允许在构造函数参数、属性声明等处直接使用newClassName()作为默认值,但需满足常量表达式限制且不绕过readonly属性的初始化规则。
-
html_errors关闭时var_dump和错误输出为纯文本无格式;可通过ini_get('html_errors')确认值为"0"或false即关闭,需修改php.ini中html_errors=On并重启服务,或用ini_set('html_errors','1')临时启用。
-
在绝大多数实际场景中,将switch放在循环外(一次判断多次执行)还是循环内(多次判断一次执行),性能差异微乎其微;应优先选择语义清晰、维护性强、符合PHP版本特性的写法,如PHP8的match表达式或函数式数组操作。在绝大多数实际场景中,将switch放在循环外(一次判断多次执行)还是循环内(多次判断一次执行),性能差异微乎其微;应优先选择语义清晰、维护性强、符合PHP版本特性的写法,如PHP8的match表达式或函数
-
strlen()按字节计数,mb_strlen()按字符计数;中文等多字节字符用strlen()结果错误,必须用mb_strlen($str,'UTF-8')并确保mbstring扩展开启。
-
PHP进程实际加载的php.ini由PHP自身决定,需通过php--ini或phpinfo()查看“LoadedConfigurationFile”行;若显示(none),则使用编译默认路径或未加载任何ini。
-
dispatch()后任务未执行是因为Laravel队列默认不自动运行,需手动启动queue:work进程,且QUEUE_CONNECTION须设为redis或database而非sync。
-
应直接用UPDATE语句赋新路径而非字符串替换;若需批量替换,须加正则锚点或SQLREPLACE函数并预览;删旧图、传新图、更新数据库三步需事务兜底,且操作前必须校验字段结构与路径合法性。