当前位置:

首页 > 编程开发 > PHP配置

PHP配置

PhpStorm macOS版
PhpStorm macOS版

PhpStorm 是 JetBrains 推出的专业 PHP 集成开发环境,可在 Mac 上完成代码编写、智能检查、重构、调试、测试和数据库管理。它支持主流 PHP 框架、Composer、Git、Docker 与远程解释器。

立即下载
¥890
Mac 2026-10-13
数据库 编程开发 phpstorm 服务器管理 集成开发环境

```html 推荐链接 这里整理了一些你可能需要的链接目录。 命令行环境下执行不同版本的PHP程序 在Windows环境下,如果你安装了多个PHP版本,直接运行php script.php可能会调用全局默认的PHP CLI。这时候,指定绝对路径来执行特定版本是个好办法。 // 例如,分别执行PHP

本文目录
    ```html

    推荐链接

    这里整理了一些你可能需要的链接目录。

    命令行环境下执行不同版本的PHP程序

    在Windows环境下,如果你安装了多个PHP版本,直接运行php script.php可能会调用全局默认的PHP CLI。这时候,指定绝对路径来执行特定版本是个好办法。

    // 例如,分别执行PHP 5.6和PHP 8.0
    'php5.6' => 'path\to\php5.6\php.exe script.php'
    'php8.0' => 'path\to\php8\php.exe script.php'
    
    // 一个具体的例子
    D:\wamp64\bin\php\php8.0.26\php.exe windows.php
    
    // 注意:即使指定了路径,有时仍可能因为环境变量问题而执行失败。
    // 此时,可以临时设置PATH环境变量来确保使用正确的版本。
    'Windows 使用 Set 命令临时设置 PATH 环境变量'
    set PATH=D:\wamp64\bin\php\php8.0.26;%PATH%
    // 设置完成后,再尝试执行通常就没问题了。
    

    设置脚本的最大执行时间

    对于需要长时间运行的脚本,调整最大执行时间限制是必要的。可以通过ini_set函数在运行时动态修改。

    // 将脚本最大执行时间设置为60秒
    ini_set('max_execution_time', '60');
    
    // 或者,设置为0表示不限制执行时间(请谨慎使用)
    ini_set('max_execution_time', 0);
    

    opcache的配置与使用

    开启

    要启用OPcache,需要在php.ini文件中进行配置。关键是要把配置写在正确的区段。

    // 配置应写在 [PHP] 区段下,写在其他区段可能不会生效。
    [PHP]
    ;zend_extension=opcache.so // Linux环境下引用opcache
    zend_extension=opcache.dll // Windows环境下引用opcache
    
    [opcache]
    ; 同样,这里也需要指定扩展路径,例如:
    zend_extension = "php_opcache.so"
    zend_extension = "d:/wamp64/bin/php/php5.6.25/ext/php_opcache.dll"
    opcache.enable=1 // 在Web环境下启用,默认开启
    opcache.enable_cli=1 // 在CLI命令行环境下启用
    
    // 配置完成后,可以通过以下代码检测OPcache是否成功开启
    if (extension_loaded('Zend OPcache') && ini_get('opcache.enable')) {
        echo "Opcache 已开启";
    } else {
        echo "Opcache 未开启";
    }
    
    // 对于PHP 8.0及以上版本,如果需要确认JIT是否生效,可以检查其状态
    var_dump(opcache_get_status()['jit']);
    // 输出类似 array:7 ["enabled" => true "on" => true ...] 则表示JIT配置成功。
    

    函数

    OPcache提供了一系列有用的函数,方便我们进行缓存管理。

    opcache_compile_file — 无需运行,即可编译并缓存 PHP 脚本
    opcache_get_configuration — 获取php.ini中的配置信息
    opcache_get_status — 获取缓存的状态信息
    opcache_invalidate — 使指定脚本的缓存失效
    opcache_is_script_cached — 检查一个php文件是否已被缓存
    opcache_reset — 重置并清除所有的缓存内容
    
    // 例如,新建一个脚本文件来清除所有OPcache缓存
    
    

    常用配置

    生产环境和开发环境的OPcache配置策略往往不同。下面是一些核心配置项的说明。

    // 开发环境通常不建议开启opcache,以免影响代码修改后的即时生效。
    opcache.enable=1 // 总开关
    opcache.memory_consumption=128 // 为Opcode缓存分配的内存大小(MB)
    opcache.interned_strings_buffer=32 // 存储临时字符串的内存大小(MB)
    opcache.max_accelerated_files=200000 // 最大可缓存的PHP文件数量
    opcache.validate_timestamps=1 // 是否检查文件时间戳以判断缓存是否过期
    opcache.revalidate_freq=60 // 检查时间戳的周期(秒),0表示每次请求都检查
    opcache.sa ve_comments=0 // 是否缓存文档注释,关闭可减小缓存体积
    opcache.jit=on // 控制JIT编译功能(PHP 8+)
    opcache.jit_buffer_size=128M // 为JIT编译保留的共享内存大小
    
    /**
     * 关于 opcache.validate_timestamps 的取舍:
     * 开启后,OPcache会定期检查源文件是否更新,这会带来轻微的性能开销。
     * 在生产环境,代码更新不频繁,建议关闭此项以获得最佳性能。
     * 当有新代码部署时,手动执行 opcache_reset() 或重启Web服务来清除缓存即可。
     *
     * 关于 opcache.enable_cli 的取舍:
     * 启用后,在CLI模式下运行的PHP脚本也能使用OPcache。
     * 但CLI模式通常是单次执行就结束的进程,开启OPcache意义不大,反而浪费内存和时间。
     * 不过,如果你在使用Swoole等常驻内存的Web应用框架,开启它是有益的,可以避免重复编译模板等文件。
     */
    

    全部配置

    这里是OPcache更完整的配置列表,供深度调优时参考。

    // 启用(设置为1) 禁用(设置为0)
    opcache.enable boolean // 总开关
    opcache.enable_cli boolean // CLI模式开关
    opcache.memory_consumption integer // 共享内存大小
    opcache.interned_strings_buffer integer // 驻留字符串缓冲区大小
    opcache.max_accelerated_files integer // 最大缓存文件数
    opcache.validate_timestamps boolean // 是否验证时间戳
    opcache.revalidate_freq integer // 验证频率(秒)
    opcache.revalidate_path boolean // 是否在包含路径中重新验证
    opcache.sa ve_comments boolean // 是否保存注释
    opcache.max_wasted_percentage integer // 内存“浪费”上限百分比
    opcache.use_cwd boolean // 使用工作目录避免命名冲突
    opcache.load_comments boolean // 是否加载注释
    opcache.fast_shutdown boolean // 启用快速关机
    opcache.enable_file_override boolean // 覆盖 file_exists 等函数
    opcache.optimization_level integer // 优化级别位掩码
    opcache.inherited_hack boolean // PHP 5.3前的继承兼容性选项
    opcache.dups_fix boolean // 修复“不可重定义类”错误
    opcache.blacklist_filename string // 黑名单文件路径
    
    // PHP 8 新增的JIT相关配置
    opcache.jit=off|on|1255 // 控制JIT功能,1255通常能获得最高性能
    opcache.jit_buffer_size=0|128M // 为JIT保留的共享内存量,0为禁用
    

    PHP版本号隐藏

    PHP 版本信息泄露
    系统数据包 X-Powered-By 字段泄露了 PHP 具体版本信息

    暴露具体的PHP版本号会带来潜在的安全风险。关闭这个信息显示是一个简单的加固步骤。

    // 找到并编辑 php.ini 文件
    // 搜索 expose_php,将其值从 On 改为 Off
    expose_php=Off
    
    // 修改后,重启PHP-FPM或Apache服务使配置生效
    service php-fpm restart
    // 或者对于Apache
    service httpd restart
    

    PHP链接SQLServer数据库

    首先要确定sqlserver扩展是否启用

    连接SQL Server前,先确认PHP环境已加载必要的扩展。

    // 方法一:通过phpinfo()查看
    
    // 在输出页面中搜索 "sqlsrv" 或 "pdo_sqlsrv",找到即表示扩展已启用。
    
    // 方法二:使用 extension_loaded 函数检测
    
    

    确认扩展可用后,就可以使用sqlsrv_connect函数进行连接和查询了。

    $server = '链接的服务器地址';
    $database = '数据库名称';
    $username = '用户名称';
    $password = '用户密码';
    
    $conn = sqlsrv_connect($server, array(
        'UID' => $username,
        'PWD' => $password,
        'Database' => $database,
        "CharacterSet" => "UTF-8" // 指定字符集,避免乱码
    ));
    
    if( $conn) {
        echo "连接成功";
        $sql = "SELECT top 100 * FROM tb_user";
        $res = sqlsrv_query($conn, $sql);
        if ($res === false) {
            die(print_r(sqlsrv_errors(), true)); // 查询失败时打印错误
        }
        while ($row = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC)) {
            // 注意:字段名必须与数据库中的完全一致
            echo "

    ID: " . $row['字段1'] . ", user_name: " . $row['字段2'] . "

    "; } } else { echo "连接失败"; }

    PHP 扩展

    apache 和 PHP 的报错日志真的很重要,很重要,很重要

    在 Windows 上有两种加载 PHP 扩展的方式:把扩展编译进 PHP,或者加载 DLL。加载预编译的扩展是更简单更被推荐的方式。
    要加载扩展,需要在系统中有可用的 .dll 文件。

    PHP性能分析

    Xdebug

    Xdebug是强大的PHP调试和性能分析工具。不同版本的配置方式略有差异。

    // Xdebug 2.x 的配置示例
    # zend_extension="xdebug.so" // Linux
    zend_extension="xdebug.dll" // Windows
    # 性能分析器总开关,设为1则每次请求都生成报告
    # xdebug.profiler_enable=0
    # 触发模式,设为1则仅在请求带 XDEBUG_PROFILE 参数时生成报告
    # 例如:http://127.0.0.1/test/index.php?XDEBUG_PROFILE=1
    xdebug.profiler_enable_trigger=1
    # 分析文件输出目录
    xdebug.profiler_output_dir="/var/tmp/xdebug"
    
    // Xdebug 3.x 的配置示例
    [xdebug]
    zend_extension="d:/wamp64/bin/php/php8.0.26/zend_ext/php_xdebug-3.1.6-8.0-vs16-x86_64.dll"
    xdebug.mode=profile // 设置为性能分析模式
    xdebug.mode = debug // 也可以设置为调试模式
    xdebug.start_with_request=trigger // 通过触发器启动分析
    xdebug.output_dir="d:/wamp64/xtmp" // 分析文件输出目录
    xdebug.client_port = 9003 // 确保调试端口未被占用
    xdebug.client_host=127.0.0.1 // IDE所在IP,本地调试通常为127.0.0.1
    
    /**
     * Xdebug 3 的模式说明:
     * debug: 用于交互式调试。
     * profile: 生成性能分析文件。
     * trace: 生成函数调用跟踪日志。
     * coverage: 代码覆盖率分析。
     * 可以同时启用多个模式,例如:xdebug.mode=debug,profile,trace
     *
     * xdebug.start_with_request=trigger 表示需要通过GET/POST参数或Cookie来触发分析。
     * 如果设置为 yes,则每个请求都会自动启动分析,可能影响性能。
     */
    

    Webgrind

    git链接: webgrind
    将webgrind下载下来后解压到本地的web目录,然后在浏览器中执行http://127.0.0.1/webgrind-master/,并且在显示webgrind页面右上角点击update
    非正常情况:如果执行了浏览器只显示webgrind页面,执行update没有显示表格,那么可能需要执行在webgrind-master目录下执行 composer install,然后在config.php 设置对应xdebug生成cachegrind.out报告的路径

    Webgrind是一个网页版的Xdebug性能分析结果查看器。其配置文件config.php中的路径设置是关键。

    // webgrind-master文件夹下的config.php可以做相关配置
    // 存储分析后生成的cachegrind文件的目录(可写)
    $storageDir
    // 如果没装xdebug,webgrind会到此路径下分析里面的cachegrind文件。
    // 如果安装了xdebug,则会查找xdebug.profiler_output_dir指定的目录(默认是/tmp)
    $profilerDir
    

    Show::webgrind把所有被调用函数/方法首先做一个排序,由高到低显示。然后取出前N个,使他们耗时比率之和在90-100%之间。注意: 最好不要选择100%,这样将会显示所有被调用的函数/方法,如果是一个代码复杂的页面,那么webgrind偶尔会被卡死。并且通常我们只要关注耗时前几名的函数即可。
    of: 就是选择profile文件。默认是分析最新一次的xdebug记录。如果之前设置好路径和记录机制那么我们就会发现下拉列表里有很多选项。
    in: 显示百分比/毫秒/微秒
    彩色进度条: 蓝代表php内置函数,灰色代表requir/onclude,绿代表类方法,橙黄代表类其他过程函数 (用户自定义函数)
    update: 表示更新在这里插入图片描述
    需要配合下面的PHP代码进行分析,分析时候记得调整show到100%
    invocation count 表示的是整个php页面从载入到执行完毕呈现,各种函数被调用的总次数(如sleep不管被哪个函数调用,总共页面期执行了6次,自身调用一次,t3调用一次,t4调用一次,t4调用t3一次,t5调用t4间接导致t3调用,1+1+2+2 = 6)。
    total self cost 表示的是函数自身消耗(就如t5中10万次循环,但sleep执行了2000毫秒,但自身消耗并不把其他任何函数调用算在其中)。
    total inclusive cost 表示的是此函数从开始到执行完毕所用消耗 ,包括自身消耗和调用其他函数消耗。
    Calls 此函数中调用并执行的所有函数/方法名 次数 及耗时。
    Total Call Cost 被此父函数调用时,执行的总耗时。
    Count - 父函数调用子函数的次数。

    下面这段代码包含了不同复杂度的函数调用,可以用来生成性能分析数据,并在Webgrind中观察结果。

    //仅使用内置函数
    function t1(){
        time();
    }
    //自定义函数外再执行一次time();
    sleep(1);
    t1();
    
    //t2调用自定义函数
    function t2(){
        t1();
    }
    t2();
    
    //增加内置函数耗时
    function t3(){
        sleep(1);
    }
    t3();
    
    //t4增加调用自定义函数t3一次。
    function t4(){
        t3();
        sleep(1);
    }
    t4();
    
    //t5增加非调用函数式内耗 for循环10万次,并调用t4
    function t5(){
        $u=0;
        for($i=0;$i<100000;$i++){
            $u+=$i;
        }
        t4();
    }
    t5();
    die;
    

    xhprof

    XHProf是Facebook开源的另一个轻量级PHP性能分析工具。它的配置相对简单。

    // 在php.ini中添加xhprof扩展配置
    [xhprof]
    extension=php_xhprof.dll // 指定扩展DLL文件
    xhprof.output_dir="D:/wamp64/xtmp/xhprof" // 指定性能分析数据输出目录
    

    配置完成后,可以通过以下代码检查扩展是否成功加载。

    // 使用phpinfo()来搜索xhprof或者使用下面代码
    // 判断xhprof扩展是否安装
    if (extension_loaded('xhprof')) {
        echo 'xhprof扩展已安装';
    } else {
        echo 'xhprof扩展未安装';
    }
    // 判断xhprof扩展是否开启
    if (function_exists('xhprof_enable')) {
        echo 'xhprof扩展已开启';
    } else {
        echo 'xhprof扩展未开启';
    }
    
    ```
    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 PHP
    相关文章 更多
    php怎么连接数据库mysql完整代码与操作步骤
    php怎么连接数据库mysql完整代码与操作步骤

    详细介绍如何使用PHP PDO扩展连接MySQL数据库,包含完整的代码示例、DSN配置方法及异常处理技巧,帮助开发者快速建立稳定安全的数据库连接。

    PHP递归遍历目录文件:RecursiveDirectoryIterator与自定义实现
    PHP递归遍历目录文件:RecursiveDirectoryIterator与自定义实现

    深入解析在PHP中递归遍历多级目录文件的两种核心方案:基于SPL标准库的RecursiveDirectoryIterator高效流式迭代,与基于scandir/opendir的自定义递归函数实现,剖析执行机制、内存表现与实战避坑指南。

    解决PHP递归报错:max_nesting_level限制与内存溢出处理
    解决PHP递归报错:max_nesting_level限制与内存溢出处理

    遇到PHP递归报错时,不要盲目调大max_nesting_level。本文教你区分Xdebug限制、内存耗尽和正则递归错误,提供代码级的终止条件优化与迭代替代方案,彻底解决栈溢出问题。

    PHP递归中static变量与引用传递的常见陷阱及调试
    PHP递归中static变量与引用传递的常见陷阱及调试

    本文分析PHP递归中static变量导致的状态污染及引用传递引发的共享数据修改问题。提供具体的代码复现、缓存键设计建议及调试打印技巧,帮助开发者避免隐蔽的逻辑错误。

    PHP递归性能优化技巧与迭代替代方案
    PHP递归性能优化技巧与迭代替代方案

    解析PHP递归函数在树形数据处理中的性能瓶颈,提供预加载数据消除I/O、使用显式栈替代深层递归的实战方案,帮助开发者在代码可读性与执行效率间做出合理取舍。

    thinkphp项目部署指南详解服务器部署步骤
    thinkphp项目部署指南详解服务器部署步骤

    详细解析ThinkPHP项目在Linux服务器上的部署步骤,包括环境搭建、文件权限、Nginx配置及常见陷阱,提供可复制的代码示例与例外场景分析。

    PHP发送HTTP请求的方法及完整代码教程
    PHP发送HTTP请求的方法及完整代码教程

    详解PHP中发送HTTP请求的常用方法,包括原生cURL配置、file_get_contents流操作及Guzzle库的使用,提供GET/POST请求的完整代码示例与注意事项。

    php解析json内嵌json数据教程及取值方法
    php解析json内嵌json数据教程及取值方法

    本文详解PHP中json_decode处理嵌套JSON数据的机制,对比对象与数组模式的取值差异,提供防止空指针错误的健壮代码示例,帮助开发者快速定位解析失败原因。

    PHP 在 2026 年还适用吗?
    PHP 在 2026 年还适用吗?

    PHP在2026年仍适用于现代网站构建,在常规Web服务和内容密集型站点中较Python、Java等保持优势。其JIT编译优化性能,安全补丁及时,全面支持云原生,拥有成熟框架生态,整体成本较低。

    DebianPHP如何SSL加密
    DebianPHP如何SSL加密

    在Debian系统上为PHP配置SSL加密,通常涉及以下几个步骤:安装SSL证书:首先,你需要一个SSL证书。你可以从Let’s Encrypt免费获取,或者购买一个商业证书。使用Let’s Encrypt:sudo apt updatesudo apt install certbotsudo ce

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。

    即将离开本站
    您即将前往第三方网站,请确认是否继续?