-
phpenv无法直接启用shmop,需为每个PHP版本手动编译安装该扩展,并在对应php.ini中用绝对路径加载shmop.so,同时注意共享内存的key一致性与close/delete配对使用。
-
CodeIgniter3的Email类是Library而非Helper,需用$this->load->library('email')加载;SMTP配置必须显式设置protocol、host、port、user、pass、crypto;调试须用print_debugger()查具体错误;charset必须小写'utf-8',HTML邮件需设mailtype='html'并正确编码中文主题。
-
json_encode()是PHP中将数组转为JSON字符串的唯一标准方法,需确保输入为UTF-8编码、无资源/循环引用,并配合错误处理与类型校验。
-
Nginx通过location规则配合if+deny限制上传危险文件后缀,但需精准匹配上传目录或接口,且必须辅以PHP层真实扩展名校验和上传目录不可执行设置,否则易被绕过。
-
XAMPP默认仅监听80/443端口,要实现“一个IP多端口多网站”,须手动添加Listen指令并为每个端口配置独立<VirtualHost>块,且必须在httpd-vhosts.conf中显式声明DocumentRoot与ServerName,否则请求无法正确路由。
-
Workerman原生支持标准WebSocket协议,可与Vue3直接配合实现弹幕;关键在于后端用Worker("websocket://0.0.0.0:2347")启动服务,前端Vue3用newWebSocket("ws://...")连接,禁用Socket.IO等非标方案,避免协议不兼容导致断连。
-
Laravel限流需同时满足三个刚性条件:缓存驱动必须为Redis(或Memcached)、路由须显式绑定throttle中间件(api组默认启用但web组不自动生效)、限流键必须唯一标识请求主体;throttle:60,1中60是每分钟最大请求数、1是时间窗口分钟数,不支持原生秒级限流。
-
rename()函数最直接改扩展名,但仅重命名不校验内容;需用finfo_open()识别真实类型,并配置Web服务器解析新后缀。
-
Artisan命令须在Laravel项目根目录执行,确认方法为检查artisan文件及vendor目录存在;自定义命令需注册到Kernel.php或满足Laravel10+自动发现条件,并清除配置缓存;$signature中空格和等号位置必须准确。
-
ESI是基于HTTP标准的边缘缓存协议,用于实现页面分片缓存:主页面与动态区块(如未读消息)可设不同缓存策略,需网关缓存支持、响应头声明esi-enabled、Twig中使用render_esi()。
-
PHP提供五种一维数组合并方式:1、array_merge()数值索引重排、字符串键覆盖;2、array_merge_recursive()同键值合并为数组;3、+运算符左优先保留、不覆盖;4、splat操作符解包配合array_merge;5、array_replace()逐层替换同名键值。
-
加密字段无法直接用明文WHERE查询,因密文与明文无映射关系;正确做法是PHP端用相同算法、密钥、IV加密查询条件后匹配密文,仅支持等值查询,不支持LIKE或范围查询。
-
PHP关联数组用字符串键提升可读性,声明可用[]或array(),访问必须加引号;遍历常用foreach(键值/仅值/键列表);增删改直接操作原数组;合并用+或array_merge()区分覆盖逻辑;键名大小写敏感且数字字符串键易引发类型隐式转换。
-
ERROR1049(42000):Unknowndatabase表示指定数据库不存在,常见原因包括:数据库未创建、datadir路径为空或错误、多MySQL版本切换导致连接错实例、PHP连接代码中库名拼写错误或未预先创建库。
-
withCount()是Laravel原生高效关联计数方案,生成SELECTCOUNT(*)子查询避免N+1,支持条件闭包、字段重命名、$appends序列化及访问器转0防null。