-
PHP文件上传必须先检查$_FILES'file'是否为UPLOAD_ERR_OK,再校验扩展名、用move_uploaded_file安全落地,确保表单enctype和php.ini配置正确。
-
phpEnv默认不支持WebSocket,需手动配置:强制HTTP/1.1、透传Upgrade和Connection头、延长proxy_read_timeout至86400,并确保location块位于server根作用域且未被其他规则拦截。
-
应使用mysqli_fetch_assoc()或PDO::fetch()直接获取单行记录,而非依赖LIMIT1或fetchAll()[0];务必检查返回值是否为null/false再访问字段,避免未匹配时的下标错误和空数组问题。
-
必须显式启用日志功能,仅配置xdebug.mode=debug不会自动生成xdebug.log;需在php.ini或xdebug.ini中添加xdebug.log=/path/to/xdebug.log和xdebug.log_level=7,确保目录可写并重启PHP服务后,触发调试请求才会生成日志。
-
PHP中对象转数组有五种方法:一、json_decode($json,true)适用于JSON字符串;二、get_object_vars()仅获取public属性;三、(array)强制转换对stdClass有效但自定义类不推荐;四、ReflectionObject可访问所有属性;五、自定义toArray()方法最规范可控。
-
phpenv通过php-build插件从源码编译安装PHP版本,支持官方归档版(如8.3.13、7.4.33等),不提供预编译包;版本生效优先级为.phpenv-version文件>phpenvlocal>phpenvglobal>系统默认php。
-
phpEnv本身不解决Nginx的503错误,因其仅为Windows下PHP集成环境,503由Nginx反向代理限流或后端服务异常触发;常见原因包括limit_req配置过严、PHP-FPM未启动或fastcgi_pass地址不匹配、Nginx无法连接PHP-FPM等,需通过error.log定位具体原因并针对性调整。
-
PHP致命错误不写日志的主因是log_errors=Off或error_reporting未覆盖E_ERROR,需开启log_errors、设合适error_reporting、重启php-fpm、检查路径权限及配置生效位置,并排查php-fpm日志与display_errors干扰。
-
LengthAwarePaginator用于手动分页,需传入当前页数据数组、总数、每页条数和当前页码;注意$items要->values()重置键名,$total须为整数,currentPage需正确换算。
-
MGET在Redis集群中报CROSSSLOT错误是设计使然,因命令需原子执行且仅限单槽;必须用一致HashTag(如{user:1001})强制相关key落入同一slot,否则无法批量读取。
-
phpenv不处理虚拟目录,仅管理PHP版本;虚拟目录需通过Apache的Alias或VirtualHost指令、Nginx的location块配置,与phpenv完全解耦。
-
phpenv是命令行工具,无图形界面,“显示不全”实为终端渲染问题;需调整窗口宽度≥120字符、禁用GPU加速、使用等宽Unicode字体,并设置TERM=xterm-256color。
-
htmlspecialchars()防XSS必须显式传入ENT_QUOTES|ENT_HTML5和'UTF-8'编码,仅适用于HTML文本节点或属性值;输入过滤无效,JSON输出需用json_encode()配合HEXflags,模板引擎和JS拼接也需按上下文严格处理。
-
多态字段名必须为“关系名_id/type”,如commentable_id/commentable_type,不可自定义;morphTo()参数顺序为(关系名,id字段,type字段);未配morphMap时type存完整类名,需手动映射并迁移旧数据;预加载只能用关系名commentable而非模型名。
-
删limitip.conf能立刻解封,该文件位于/www/server/panel/data/limitip.conf;删除后无需重启面板,但会自动重建,需关闭登录失败封禁或设IP白名单防复发。