-
需先安装Node.js运行时并启用PM2插件,再配置运行用户、项目路径与入口文件,最后通过反向代理将域名请求转发至应用端口实现对外访问。
-
不建议在生产环境直接安装宝塔面板。因其默认暴露8888端口、root权限运行、缺乏FIPS/SELinux支持、存在历史漏洞风险,仅限内网或测试环境使用;若必须部署,须严格限制访问、禁用高危功能并校验安装脚本。
-
应逐级下钻用du-sh定位深层大目录,避免依赖宝塔面板显示;需加2>/dev/null屏蔽权限错误,用--max-depth和grep过滤聚焦可疑路径,并检查软链接、挂载点及被进程占用的已删文件。
-
主流PHP框架日志需精准配置通道与触发时机:Laravel默认不捕获trigger_error()和error_log(),须调整level或统一用Log::方法;Symfony的fingers_crossed需正确配置action_level与stop_buffering;ThinkPHP的trace开关不处理异常,致命错误需手动注册shutdown函数。
-
EloquentAttributeRedaction并非Laravel内置功能,需通过访问器(如getPhoneRedactedAttribute)动态返回脱敏值,而非修改原始数据或重写toArray();GDPR擦除要求真实删除数据,涂黑仅用于展示层。
-
宝塔多PHP版本需手动绑定站点并确保php-fpm运行及配置匹配,CLI默认路径不自动切换,扩展需按版本单独安装,Composer需同步更新php版本约束。
-
array_multisort必须配合array_column使用,因为它仅支持一维数组排序;直接对多维数组调用会失效,需先用array_column抽出指定列降维,再传入原数组引用实现真实重排。
-
phpEnv不支持直接配置IP黑白名单,需通过Apache的.htaccess、Nginx的allow/deny指令或PHP代码层手动实现,且需注意IP获取可靠性及配置生效条件。
-
pm.max_children设过高会催生僵尸进程,因其导致大量子进程并发存在,一旦部分进程异常终止而父进程未及时调用waitpid()回收,就会堆积为Z状态,耗尽PID资源;需结合单进程RSS内存与总可用内存反推合理值(如1400MB÷45MB≈31),建议设25–30并配套收紧start_servers等参数。
-
可使用ReflectionFunction类动态获取PHP函数的详细信息:包括名称、内置/用户定义属性、参数类型与默认值、返回类型、PHPDoc注释及调用特性等元数据。
-
确认插件问题需执行SELECTuser,host,pluginFROMmysql.userWHEREuser='root';若plugin为caching_sha2_password,且PHP版本≤7.4,则是认证插件不兼容;应执行ALTERUSER'root'@'localhost'IDENTIFIEDWITHmysql_native_passwordBY'密码';并FLUSHPRIVILEGES。
-
json_encode和json_decode的难点在于静默失败,根源是编码不一致、非法类型输入、JSON格式错误及错误处理缺失;需用mb_convert_encoding、json_last_error_msg()、JSON_THROW_ON_ERROR等精准定位问题。
-
全局作用域必须在模型boot()中注册,否则可能不执行或重复注册;闭包方式需指定键名才可排除;类方式可直接传类名;禁止在apply()中调用DB查询或依赖请求上下文。
-
PHP常量一旦定义便不可更改,因其实现为编译期绑定、ZVAL标记为immutable;需运行时可变配置时应改用变量、静态属性、环境变量或函数封装。
-
Gii工具最适合项目初期、表结构稳定时快速生成标准CRUD代码;它能自动识别时间戳、布尔字段及外键并生成对应逻辑,但生成代码仅是起点,需人工补充权限控制、业务验证、敏感字段过滤等,且难以适配DDD、API-first或前后端分离场景。