-
phpenv实为两类工具:Unix下PHP版本管理器(仅终端切换版本)与Windows下集成环境套件(含Apache/MySQL等图形化服务)。混用将导致命令失效或服务启动失败。
-
必须手动修改redis.windows-service.conf中的maxmemory和maxmemory-policy参数并确保Redis服务加载该配置文件,否则phpEnv界面设置无效;验证方法为检查INFOserver输出的config_file字段及服务启动参数。
-
PHP自身不支持日志轮转,必须由logrotate、Monolog或Web服务器接管;配置logrotate需显式指定rotate和maxage,权限须匹配PHP进程用户,并在postrotate中发送USR2等信号重载服务。
-
Laravel10+移除了全局factory()辅助函数,须改用模型静态factory()方法(需useHasFactory),工厂类须命名规范、继承Factory,definition()中用$this->faker,关联数据用for()/has()而非手动赋值。
-
Blade不是PHP原生语法,必须依赖Laravel框架的ViewServiceProvider、BladeCompiler及完整视图生命周期才能解析@extends/@section等指令;纯PHP中直接include或require会原样输出文本而报错。
-
Hyperf中设置Redis缓存过期时间应优先用setex或显式传正整数$ttl,避免传null/0导致永不过期;Cacheable的getCacheTTL仅对主键查询生效,且需启用ModelCache组件;并发刷新access_token需结合提前刷新策略与Redis分布式锁。
-
<p>gitpull不恢复已删文件是设计使然,因其本质为fetch+merge,仅更新未修改文件和提交历史,将本地删除视为主动操作而不覆盖;恢复应使用gitcheckoutHEAD--<file>或gitrestore<file>。</p>
-
Laravel中间件构造函数不能接收路由参数,所有动态值必须通过handle()方法第三个字符串参数传入;正确写法为CheckRole::class.':admin,editor',错误写法如"App\Http\Middleware\CheckRole::class:admin"。
-
pdo_mysql扩展未真正启用,主因是php.ini中extension=pdo_mysql被注释或路径错误、Apache未重启、CLI与Web环境配置不一致;需通过phpinfo()确认加载状态,修正extension_dir和扩展行,重启Apache并验证error.log。
-
phpEnv不是服务,无法自动启动;它仅是切换PHP二进制路径的shell工具,真正需设自启的是php-fpm、Nginx或Apache等运行时组件。
-
foreach性能最优、语义最清晰,应作为首选;for仅适用于需精确控制索引或反向遍历的特定场景;each()及reset/next组合已废弃,务必避免。
-
doctrine/doctrine-bundle与doctrine/migrations版本必须主版本对齐:v2.x对应v3.x,v3.x对应v3.5+/v4.x(推荐v4.3+);错配会导致命令缺失或Classnotfound错误,需同时升级两者并处理命名空间变更、方法签名及$connection访问方式。
-
PHP不检测死锁,MySQLInnoDB主动发现并回滚事务;PHP需捕获错误码1213、定位代码、重试幂等操作,配合innodb_print_all_deadlocks=ON记录全量死锁日志。
-
PHP自动加载机制的核心是类首次使用时才载入,避免手动require/include;__autoload()已废弃,spl_autoload_register()是标准做法,支持多函数注册与命名空间映射;PSR-4为现代项目事实标准,由Composer实现。
-
PHP中真正可靠的分布式锁只能基于Redis的SET原子命令(NX+EX)加唯一value标识,并配合Lua脚本校验释放;ZooKeeper因PHP生态支持弱、扩展过时而基本不可用,flock等仅为本地锁。