-
PHP自动类型转换在松散比较、算术运算、布尔判断等场景触发,如"abc"转0、"5"+"3.2abc"得8.2;常见坑包括"0"为true而0为false、array()==null为true;应优先使用===、主动校验类型、用户输入及时强转并验证。
-
PHP数组在接口返回数据中应以结构清晰、类型明确、可预测的方式组织,避免嵌套过深、键名不统一、空值处理随意等问题,确保前后端协作高效、稳定。统一使用关联数组(key-value),禁用纯数字索引接口返回的数据本质是结构化信息,需通过语义化键名表达含义。即使返回列表,也应包裹在有意义的字段下:✅推荐:["users"=>[{"id"=>1,"name"=>"张三"},{"id"=>2,"name"=>"李四"}]]❌避免:[{"id"=>1,"nam
-
PHP防重复提交应采用Token机制:一、SessionToken一次性验证;二、双Token检查;三、Cookie+Timestamp联合校验;四、数据库唯一索引约束;五、前端禁用+Token同步校验。
-
mysql.user表损坏不能用REPAIRTABLE修复,因其为InnoDB引擎且属系统库;须停服后执行--initialize-insecure重建权限表,再重设root密码并验证plugin、字符集及host匹配性。
-
用user_ancestor表固化多级关系链,字段含user_id、ancestor_id、level;佣金规则存commission_rule表,按匹配精度JOIN计算;结算用settlement_id幂等控制,退款需反向扣佣。
-
必须使用CI3.0+的Encryption类或encrypt()/decrypt()方法,且$config['encryption_key']须为openssl_random_pseudo_bytes(32)生成的真实随机二进制密钥,明文字符串会导致HMAC验证失败而解密为空;CI3.x加载encryption库后调用$this->encryption->encrypt(),CI4.x使用service('encrypter')->encrypt();密钥不可动态构造、不可更改,数据库字
-
先查端口占用进程:以管理员身份运行CMD,执行netstat-ano|findstr:80得PID,再用tasklist|findstrPID确认进程;若PID为4则属HTTP.sys不可强杀,需禁用相关服务或改Apache/MySQL端口(如80→8080、3306→3307)并重启服务。
-
最直接办法是分别验证CLI和Web环境的PHP版本:CLI执行php-v,Web新建info.php调用phpinfo();再检查扩展、函数、日志及运行兼容性脚本。
-
PHP通常不需要数据库连接池,因其请求生命周期短、进程隔离,连接复用依赖持久连接而非跨进程池化;高频建连开销远低于业务耗时,且引入外部池易引发状态污染与运维风险。
-
phpEnv默认暴露Nginx版本号,需在主配置文件http块中添加server_tokensoff并重载生效;同时须关闭expose_php和修改fastcgi_paramSERVER_SOFTWARE以彻底隐藏版本信息。
-
CodeIgniter白屏本质是错误被静默屏蔽,修复关键是先启用错误显示:在index.php首行加error_reporting(E_ALL);ini_set('display_errors','1');并检查Apache/Nginx错误日志和application/logs/日志。
-
PHP8.4的Fiber已弃用,9.0彻底移除,须迁至原生async/await;FPM下调用Fiber::suspend()触发ZEND_MM_ASSERT是因内存上下文被强制销毁,非代码错误;替代方案是采用amphp/http-client或等待PHP9.0异步支持。
-
PHP时区需在php.ini中设date.timezone="Asia/Shanghai"并重启服务,或用date_default_timezone_set("Asia/Shanghai")临时设置,严禁使用GMT+8等非法值。
-
Jcrop仅提供坐标,圆角头像需PHP用GD/Imagick实现遮罩或二次绘制;须按原始尺寸换算坐标、保持透明通道、注意PHP版本差异及WebP支持。
-
phpEnv会自动将extension_dir设为所选PHP版本目录下ext子目录的realpath绝对路径,手动填写相对路径或错误格式会导致“找不到动态库”;应通过php-r"echoini_get('extension_dir');"查看实际生效路径,并优先将扩展文件放入phpEnv自动管理的ext目录。