-
日志写入失败需逐层排查:先检查.user.ini是否禁用日志或路径错误;再确认日志文件属主为www、权限644;接着核查Supervisor的stderr日志中Permissiondenied或proc_open禁用问题;最后确保计划任务以www用户执行并指定完整PHP路径。
-
Laravel默认通过PDO预处理参数绑定防SQL注入,where()、find()等标准方法天然安全;whereRaw()等裸SQL接口需手动绑定参数,动态表名/字段名须白名单校验。
-
认证失败需依次检查:一、密钥是否正确无空格或大小写错误;二、Bucket区域与Endpoint是否匹配;三、密钥策略是否含put/list/delete权限;四、服务器时间是否偏差超15分钟;五、IP是否被七牛云限流或拉黑。
-
需对多层级进行隐私加固:一、Nginx配置server_tokensoff;二、php.ini设expose_php=Off;三、Apache启用headers_module并unsetServer;四、清空/etc/issue与/etc/issue.net;五、注释base.html中版本信息。
-
常见错误是WHERE条件误用status字段名,实际应为log_status等;须DESCRIBE确认字段、注意大小写、ENUM值严格匹配;务必用PDO预处理绑定参数防注入,并按状态类型选PDO::PARAM_STR或PARAM_INT;多状态查询需建索引且IN列表不超过20项;联合查询应建(log_status,created_at)等复合索引。
-
最省事清空数组空值是直接调用array_filter(),它默认过滤所有PHP假值(null、false、0、""、[]、0.0),但会保留键名且不处理空白字符串,需按需搭配trim()或自定义回调。
-
宝塔面板中PHP报错显示空白需启用display_errors:一、面板PHP设置中开启;二、手动编辑php.ini设display_errors=On且error_reporting=E_ALL;三、网站.user.ini临时覆盖并重启PHP-FPM。
-
Symfony项目在Caddy下404的根本原因是Caddy默认不隐式兜底未匹配路径到index.php,需显式配置重写规则将非静态文件请求全部rewrite至/index.php,否则路由无法被Symfony路由器解析。
-
PHP匿名函数里怎么用外部变量必须显式用use关键字捕获,否则一律报错或读不到——PHP不会自动把作用域变量带进闭包里。常见错误现象:Undefinedvariable或值始终是null,尤其在循环中改了变量再定义闭包,结果所有闭包都用到最后一个值。只读捕获:写use($x),闭包内不能改$x的值(改的是副本)引用捕获:写use(&$x),闭包内修改会影响外部变量,适合回调中累积状态多个变量用逗号分隔:use($a,&$b,$c),可混用值传递和引用传递不能捕获
-
Hyperf中无法运行时切换Redis数据库,因连接池初始化时已固化db参数,SELECT命令仅在连接建立初期有效;正确做法是为不同用途(如cache、queue)配置独立连接池并显式指定db值,再通过RedisFactory::get('pool_name')获取对应实例。
-
自定义注解类必须在构造函数中显式赋值属性,否则即使声明默认值也会为null;AOP生效需满足@Aspect、扫描路径、规则匹配及启用配置;参数类型须严格匹配,trait/父类注解不自动继承。
-
htmlspecialchars()仅防HTML上下文XSS,对JavaScript、属性、JSON等场景无效;预处理语句无法参数化表名/排序字段,需白名单校验;RFI源于allow_url_include=On+用户路径拼接;会话安全需HttpOnly、Secure、UA/IP绑定等全配置。
-
PHP中全局变量管理有五种方法:一、用global关键字在函数内访问外部变量;二、通过$GLOBALS数组直接读写全局变量;三、用define()定义不可变全局常量;四、用static声明函数内持久化变量;五、用require引入配置文件批量声明全局变量。
-
strlen()计算字节数,mb_strlen()计算字符数;含中文、emoji等时结果不同,校验、截断等应优先用mb_strlen("UTF-8"),仅ASCII场景可用strlen()。
-
EditPlus通过Ctrl+Alt+S启用Split功能实现同一PHP文件的双视图编辑,支持同步滚动与独立定位,语法高亮和F12跳转正常,但需确保文件关联.php扩展名且快捷键未被输入法等劫持。