Linux PHP配置项有哪些疑问
导读:Linux 下 PHP 配置项高频疑问与要点 一 配置文件位置与生效范围 如何确认正在使用的 php.ini:命令行执行 php -i | grep ‘Loaded Configuration File’;或在站点根目录创建 phpinf...
Linux 下 PHP 配置项高频疑问与要点
一 配置文件位置与生效范围
- 如何确认正在使用的 php.ini:命令行执行 php -i | grep ‘Loaded Configuration File’;或在站点根目录创建 phpinfo.php 查看 Loaded Configuration File。注意:命令行使用的 php.ini 可能与 FPM/Apache 模块加载的不同。修改后需重启 Apache/Nginx/PHP-FPM 才生效。
- 配置可被不同层级覆盖:在 Apache 中可用 PHPINIDir 指定目录;也可用 php_admin_value/php_admin_flag 在虚拟主机或目录级覆盖(布尔型用 php_admin_flag,非布尔用 php_admin_value),这类指令不可被 .htaccess 的 php_value/php_flag 覆盖。
- 语法要点:分号 ; 为注释;指令名大小写敏感;值可为数字、带引号字符串、On/Off/none、PHP 常量(如 E_ALL)、INI 常量或位运算表达式(如 E_ALL & ~E_NOTICE)。
- 生效范围与动态性:部分配置仅能在 php.ini 设置(如涉及扩展常量的使用需在加载该扩展之后);有些可通过 ini_set() 在脚本内设置,但并非所有配置都允许运行时修改。
二 安全相关配置
- 错误展示与日志:生产环境建议 display_errors = Off,log_errors = On,并设置 error_log 为可写绝对路径;日志级别常用 error_reporting = E_ALL & ~E_NOTICE。
- 禁用危险函数:在 disable_functions 中禁用如 exec、shell_exec、system、passthru、proc_open、popen、eval、assert 等;必要时也可禁用 phpinfo。
- 访问边界:通过 open_basedir 限制脚本只能访问指定目录树,降低被包含/读取敏感文件的风险。
- 过时项提示:如 safe_mode 已在 PHP 5.4.0 移除,不应再依赖。
三 运行与性能相关配置
- 脚本与内存:根据业务调整 max_execution_time(最大执行秒数)、max_input_time(最大解析输入秒数)、memory_limit(单请求内存上限)。
- 上传与 POST:上传大文件需同时调整 upload_max_filesize 与 post_max_size,且务必保证 post_max_size ≥ upload_max_filesize;表单 enctype 需为 multipart/form-data。
- 输出与压缩:启用输出缓冲 output_buffering 可提升性能;zlib.output_compression 与 output_handler 不要同时启用压缩处理器,避免冲突。
- 时区:务必设置 date.timezone(如 Asia/Shanghai),避免时间函数产生警告与不一致。
四 PHP-FPM 与进程管理
- 通信方式:在 /etc/php-fpm.d/www.conf 中配置 listen,同机推荐 unix:/run/php-fpm.sock(长连接、开销低),跨机或集群可用 127.0.0.1:9000(TCP)。
- 进程模型与关键参数:常用 pm = dynamic/static;关键项包括 pm.max_children(最大子进程数)、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers。示例:start_servers=10,min_spare_servers=5,max_spare_servers=35,max_children=50(需结合 CPU/内存 与业务压测调优)。
- Web 服务器联动:
- Nginx:fastcgi_pass 指向上述 socket 或 127.0.0.1:9000,并设置 SCRIPT_FILENAME $document_root$fastcgi_script_name。
- Apache:可用 SetHandler “proxy:unix:/run/php-fpm.sock|fcgi://localhost” 代理到 FPM。
五 扩展与常见坑
- 扩展安装与来源:部分扩展属于 PECL(如 apcu、imagick、redis、zip、memcache),可通过包管理器(如 yum/remi)或 pecl install 安装;安装后需在 php.ini 中启用对应 extension=xxx.so。
- 扩展目录:如使用自定义路径,设置 extension_dir 指向扩展目录(如 extension_dir = “ext”)。
- 典型扩展建议:开启 OPcache(生产环境强烈建议)以缓存字节码提升性能;常用扩展如 mysqli、pdo_mysql、gd、mbstring、curl、xml、zip 等按应用需求启用。
- 生效验证:修改后重启服务,使用 php -m 或 phpinfo() 确认扩展已加载,关键项用 ini_get() 在脚本内核对。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux PHP配置项有哪些疑问
本文地址: https://pptw.com/jishu/757326.html
