-
PHP连接SQLServer需手动安装sqlsrv/pdo_sqlsrv扩展及MicrosoftODBCDriver17/18;须严格匹配PHP版本、线程模型(TS/NTS)与系统位数;扩展名用短名(extension=sqlsrv),ODBC驱动未安装会导致连接静默失败。
-
PHP8.2连不上SQLite,90%是pdo_sqlite扩展未加载;需运行php-m|grepsqlite确认输出含pdo_sqlite,而非仅sqlite3,并检查php.ini中extension=pdo_sqlite已启用、路径正确、Web与CLI配置一致,重启服务后phpinfo()中PDOdrivers必须显示sqlite。
-
应确保PHP端用json_encode输出合法JSON并设置Content-Type头,AJAX端显式声明dataType为json或调用response.json()解析,同时校验请求来源并调试输出原始数组。
-
单例模式不能直接解决连接句柄过多问题,因其仅保证实例唯一性,不控制连接生命周期;若误用持久连接、未显式释放或缓存PDOStatement,反而导致连接泄漏和Sleep堆积。
-
phpEnv本身不提供跨网络访问能力,必须手动配置MySQL绑定地址为0.0.0.0、开放防火墙3306端口、创建允许远程IP(如'%'或具体网段)登录的用户并授权,且PHP连接时host必须填本机局域网IP而非localhost。
-
PostgreSQL的hstore在LaravelEloquent中不能直接用数组语法查询,必须显式使用原生运算符(如->、?、@>),否则Eloquent将其视为普通字符串字段导致全等匹配失败或报错operatordoesnotexist。
-
推荐使用array_map函数返回新数组,因其自动应用回调并生成结果数组;其次可选foreach配合临时数组收集结果,适用于复杂逻辑;for循环适合需精确索引控制的场景。
-
sendmail_path在php.ini中需配置为真实存在的sendmail兼容路径(如/usr/sbin/sendmail-t-i),仅Linux有效且依赖PHP编译选项;Windows无效,trae环境中的sendmail_path_trae为非标准项,仅在其自研运行时中解析。
-
XAMPP默认仅监听80端口,需手动修改httpd.conf添加Listen8080、Listen8081等行,并配置对应VirtualHost块指定独立DocumentRoot和AllowOverrideAll,才能实现多端口部署Phalcon应用。
-
phpEnv中启用SOAP扩展必须手动修改对应PHP版本的php.ini文件,取消;extension=soap注释或添加该行,并确认extension_dir路径正确,最后重启Apache/Nginx及PHP-FPM进程。
-
PHP隐错是严重隐患,非功能特性。error_reporting(0)会静默忽略所有错误,包括Notice、Warning甚至部分Fatalerror;必须确保log_errors开启并配置有效error_log路径,开发环境应启用E_ALL错误报告,配合静态分析和assert断言兜底。
-
recode扩展无法在phpenv中直接启用,必须编译PHP时通过--with-recode参数启用;需先安装librecode0-dev或recode,再用CONFIGURE_OPTS="--with-recode"phpenvinstall重装PHP,并确保recode.so加载顺序在imap.so和mysqli.so之前。
-
使用mkdir()函数可创建目录,需注意权限设置(如0755)、递归参数$recursive=true以创建多级目录,并检查父目录写权限及路径是否存在,避免权限或路径错误导致失败。
-
PHP实现HTTPBasicAuth需注意:Web服务器默认不透传Authorization头,Apache需CGIPassAuthOn,Nginx需fastcgi_paramHTTP_AUTHORIZATION$http_authorization;header('WWW-Authenticate')必须配合401状态码且在任何输出前调用;密码校验须用hash_equals()防时序攻击;浏览器输错会无限弹窗,因协议无状态。
-
PHP/Laravel中不存在ScheduledExecutorService,因其是Java并发类,而PHP无长期线程;Laravel调度依赖artisanschedule:run+系统cron,Eloquent属性无法调度任务,正确方式是通过事件、队列Job和Kernel.php的schedule()配合实现。