-
必须使用PASSWORD_ARGON2ID并完整存储哈希字符串,验证仅用password_verify();旧系统需平滑升级,避免截断、编码或错误比较。
-
自定义注解类必须在构造函数中显式赋值属性,否则即使声明默认值也会为null;AOP生效需满足@Aspect、扫描路径、规则匹配及启用配置;参数类型须严格匹配,trait/父类注解不自动继承。
-
webman默认用support\exception\Handler处理未捕获异常,生成500响应并记录到webman.log,但仅限Exception类;E_WARNING等需手动set_error_handler转为ErrorException;业务异常需在config/exception.php注册专用处理器,并重写report()补充请求上下文。
-
根本原因是Xdebug配置不当导致PHP与IDE资源争抢;应将xdebug.var_display_max_depth设为3–4、xdebug.collect_params=0、xdebug.log_level=0,禁用profile模式,xdebug.connect_timeout_ms设为200–500,启用xdebug.start_with_request=trigger,并统一多环境xdebug.ini配置、清理旧日志后重启服务。
-
Nginx未加载自定义.conf文件,主因是路径错误、文件缺失、权限不足或实际加载配置与编辑路径不一致;需用nginx-V和nginx-t定位真实配置路径并确认include有效性。
-
PHP关联数组用字符串键提升可读性,声明可用[]或array(),访问必须加引号;遍历常用foreach(键值/仅值/键列表);增删改直接操作原数组;合并用+或array_merge()区分覆盖逻辑;键名大小写敏感且数字字符串键易引发类型隐式转换。
-
LaravelSail的sailup命令启动后会保持前台运行并实时输出容器日志,这并非错误,而是DockerCompose默认的「attached模式」行为;服务已就绪,可直接访问http://localhost。
-
ESI是基于HTTP标准的边缘缓存协议,用于实现页面分片缓存:主页面与动态区块(如未读消息)可设不同缓存策略,需网关缓存支持、响应头声明esi-enabled、Twig中使用render_esi()。
-
宝塔面板配置SSH公钥认证需绕过Web终端限制直接修改系统配置:一、用文件管理器上传公钥至authorized_keys并设权限600/700;二、用终端命令部署密钥并验证sshd配置;三、用计划任务批量同步;四、通过系统快照还原sshd_config启用公钥认证。
-
使用-abs($number)可将正数转为负数,该方法通过取绝对值再取反,确保结果非正,适用于所有数值类型,推荐此方式因其简洁可靠。
-
PHP获取本机IP时Permissiondenied错误主因是Web服务器低权限用户调用ifconfig等受限命令所致,应优先使用/proc/net/fib_trie解析或云厂商元数据接口等免权限方案。
-
必须传CURLOPT_URL和CURLOPT_RETURNTRANSFER;前者指定完整URL,后者设为true才能获取响应内容而非直接输出。
-
phpEnv中Apache的ServerTokens需在D:\phpEnv\Apache\conf\httpd.conf(Windows)或/opt/phpenv/Apache/conf/httpd.conf(Linux)中修改为ServerTokensProd,并同步设置ServerSignatureOff;若需彻底移除Server头,还需启用mod_headers模块并添加HeaderunsetServer指令。
-
PHP通过Socket扩展实现网络通信,核心函数包括socket_create()、socket_bind()、socket_listen()、socket_accept()、socket_connect()、socket_read()、socket_write()和socket_close(),服务器端需绑定并监听端口以接受连接,客户端直接连接服务器,双方通过读写函数交换数据,错误处理依赖socket_last_error()与socket_strerror(),阻塞模式适用于简单场景,非阻塞模式结合s
-
宝塔面板7.9的Python项目管理器无法直接部署Django项目,因其仅支持Flask和纯WSGI应用;需手动配置wsgi.py、uwsgi.ini,正确填写项目路径、启动文件(uwsgi.ini)及Python版本,并配置Nginx代理静态资源。