-
CodeIgniter3的$this->dbutil->backup()返回SQL字符串而非文件路径,需手动写入磁盘;默认不压缩、无时间戳、不支持增量,大库易超时,须设set_time_limit(0)和内存限制,并确保数据库权限与连接正常。
-
宝塔面板下ThinkPHP6出现404,根本原因是伪静态未正确配置:需在server块中location~.php$之前添加含/public/index.php的rewrite规则,运行目录设为/public,并确保fastcgi_paramPATH_INFO透传。
-
PHP中BFS需用队列按层访问节点:一、数组模拟队列适合小图;二、SplQueue性能更优;三、封装为带回调的通用函数;四、多源BFS处理非连通图,遍历所有未访问节点。
-
PHP强制下载需正确设置四个HTTP响应头:Content-Type、Content-Disposition(含rawurlencode处理中文名)、Content-Length和Content-Transfer-Encoding,且必须在任何输出前调用;大文件应避免readfile()或file_get_contents(),以防内存溢出。
-
根本原因是Nginx反向代理未透传X-Forwarded-Proto等关键头,导致后端误判协议并301跳转,叠加proxy_redirect误改Location形成循环;需设proxy_set_headerX-Forwarded-Proto$scheme;及proxy_redirectoff;
-
若phpinfo()被禁用,可通过五种替代方案获取PHP配置信息:一、用ini_get()和get_defined_constants()查询关键参数;二、构造最小化脚本模拟phpinfo()输出;三、利用.htaccess或user.ini暴露环境变量;四、循环调用extension_loaded()探测扩展状态;五、SSH下执行php-v和php--ini查看版本与配置路径。
-
Redis启动失败时若日志出现“Addressalreadyinuse”,必为端口冲突,需用netstat或lsof查PID并终止占用进程;bind配置错误、宝塔未重载配置、权限不足等也常见。
-
需手动修改phpEnv的Nginx站点vhost配置,添加auth_basic指令并用htpasswd生成密码文件,路径须确保Nginx进程可读,配置后需nginx-t测试并reload生效。
-
Eloquent没有内置AttributeAnonymization机制,它只是社区对访问器脱敏的俗称;原始数据仍明文存库,真正隐私保护需加密存储(如encryptedcast)+按需脱敏展示。
-
preg_match_all函数用于PHP中全局正则匹配,返回所有匹配结果;需指定分隔符包裹的模式、引用变量存储结果,并可选PREG_PATTERN_ORDER或PREG_SET_ORDER标志控制数组结构,处理UTF-8时须加u修饰符,注意转义与返回值检查。
-
PHP文件上传必须设置enctype="multipart/form-data",否则$_FILES为空;其数组含name、type、tmp_name、error、size五键,error为0才成功;须用move_uploaded_file()移动文件并校验;还需匹配php.ini中upload_max_filesize、post_max_size和max_file_uploads配置。
-
Behat是PHP中BDD的事实标准,需通过--append-snippets生成步骤、严格匹配注解、配置Mink扩展与driver、按领域拆分上下文类以保障可维护性。
-
首先确认PHP版本不低于8.1并启用必要扩展,接着安装Composer,使用composercreate-project创建Laravel项目,配置Nginx指向public目录并设置重写规则,最后设置storage和bootstrap/cache权限,复制.env文件并生成应用密钥。
-
PHP多维数组扁平化有五种方法:一、array_walk_recursive函数跳过键名仅处理值;二、自定义递归函数flatten_array支持键名拼接与类型判断;三、SplRecursiveIterator面向对象遍历,可访问键名与值;四、array_merge与call_user_func_array组合逐层展开;五、引用传递flatten_by_reference减少内存开销。
-
ThinkPHP6+路由定义在app/route/app.php,config/route.php仅配置全局开关;多应用下各子应用需独立配置route/app.php;URL生成需显式命名并启用完整匹配。