商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > php笔记

php笔记

  发布于2026-07-21 阅读(0)

扫一扫,手机访问

说到PHP运行环境的搭建,这几乎是每个后端开发者入门时都会碰到的问题。不论是Windows下的本地开发环境,还是CentOS服务器上的生产环境部署,亦或是PHP与MySQL的协同工作,背后都有一套相对固定的流程。下面我们就从几个核心角度,把这个问题彻底讲透。

Windows下PHP运行环境安装

先说Windows环境。PHP官方提供了Windows下的安装包,直接下载解压就行。下载地址一般在windows.php.net,选择对应的版本即可。

解压后,结合Apache或Nginx进行配置就能跑起来了。这里有几个关键概念需要理清:

php-fpm - PHP FastCGI进程管理器,负责管理PHP进程池,处理来自Web服务器的请求。可以理解为PHP的“调度中心”。

php-fastcgi - 只是一个CGI程序,负责解析PHP请求并返回结果,但不具备管理功能。这也就是为什么后来出现了php-fpm。

php-cgi - 在php-fastcgi出现之前,php-cgi就已经存在了,但因为执行效率低下,逐渐被php-fastcgi取代。

了解这些名词,有助于后续排查问题。

PHP连接MySQL

PHP 5及以上版本,官方推荐用两种方式连接MySQL:MySQLi扩展(i代表improved)和PDO(PHP Data Objects)。PDO支持12种不同数据库,而MySQLi只针对MySQL。

使用前,需要修改php.ini文件,开启mysqli扩展并指定扩展目录:

extension=mysqli
extension_dir = "D:/Tools/PHP/php-7.3.12-Win32-VC15-x64/ext"

然后通过 php.exe -m 命令查看已加载的扩展,确认mysqli已经启用。

CentOS 7下用yum安装PHP 7.2

生产环境里,CentOS + yum的组合是最省事的。安装前,先检查一下系统是否已经装了PHP:

yum list installed |grep php
rpm -qa |grep php

如果用的是自己编译安装的方式,可以通过查找php的执行程序或者检查进程(ps -ef |grep php)来确认。

接下来配置PHP源:

yum install epel-release
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

然后安装php-fpm和常用扩展:

yum install php72w-fpm
yum -y install php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mbstring php72w-pdo php72w-xml php72w-pear php72w-devel

安装完成后,用 php -v 查看版本,用 php -m 查看所有扩展,确认一切正常。

配置文件的位置也很明确:

php.ini - /etc/php.ini
phpize - /usr/bin/phpize
php-config - /usr/bin/php-config
php-fpm.conf - /etc/php-fpm.conf
php-fpm.pid - /var/run/php-fpm/php-fpm.pid

需要修改 /etc/php-fpm.d/www.conf 文件,设置监听端口和允许连接的客户端:

listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1

最后启动php-fpm:

service php-fpm start/stop/restart

其他扩展按需安装,比如php72w-cli、php72w-common、php72w-devel、php72w-fpm、php72w-gd、php72w-mbstring、php72w-mysqlnd、php72w-opcache、php72w-pdo、php72w-xml等,大部分常用的都在这里了。

编译式安装PHP

如果对性能有更高要求,或者需要定制化编译参数,那就得用编译安装的方式。步骤如下:

1. 下载PHP安装包:wget -O php7.tar.gz http://cn2.php.net/get/php-7.1.1.tar.gz/from/this/mirror

2. 解压并进入目录:tar -xvf php-7.1.1.tar.gz && cd php-7.1.1

3. 安装依赖包:yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel

4. 编译配置。这一步很关键,参数较多,但每个参数都有明确含义。比如 --prefix 指定安装目录,--enable-fpm 开启php-fpm,--with-fpm-user 和 --with-fpm-group 指定运行用户,--with-mysqli=mysqlnd 和 --with-pdo-mysql=mysqlnd 启用MySQL支持等。

5. 安装:make && make install

6. 配置环境变量:在 /etc/profile 尾部添加 PATH=$PATH:/usr/local/php/bin,然后执行 source /etc/profile 使生效。

7. 配置php-fpm:复制 php.ini-production 到 /etc/php.ini,复制 php-fpm.conf.default 和 www.conf.default 到对应位置,再从 sapi/fpm 目录复制启动脚本到 /etc/init.d/php-fpm,并赋予执行权限。

8. 启动php-fpm:/etc/init.d/php-fpm start

PHP日志文件

通过 phpinfo() 可以查看日志文件的具体位置。确定Web服务器是以哪种方式支持PHP,通常有两种方式:

1. 通过模块加载的方式,适用于Apache。这种情况下,日志配置可以在 httpd.conf 和 php.ini 中设置。

2. 通过CGI/fastCGI模式,这种方式Web服务器一般都支持。日志配置主要在 php.ini 中完成。

php.ini配置

php.ini 是PHP的核心配置文件,对性能和安全都有直接影响。以下是一些关键参数:

engine = On - 是否启用PHP解析引擎。
short_open_tag = On - 允许使用 output_buffering = 4096 - 输出缓冲区大小,建议设为4096~8192。
max_execution_time = 30 - 每个脚本最大执行秒数。
memory_limit = 1024M - 每个脚本的内存限制。
display_errors = On - 是否显示错误。生产环境建议关闭,改用日志记录。
log_errors = On - 开启错误日志记录。
upload_max_filesize = 10M - 上传文件最大限制。
date.timezone = "Asia/Shanghai" - 设置时区,避免时间相关函数出错。

对于MySQL相关配置,需要注意 pdo_mysql.cache_size、mysql.allow_persistent、mysql.max_links 等参数。生产环境建议关闭 mysqlnd.collect_statistics 和 mysqlnd.collect_memory_statistics,减少不必要的数据库访问。

Session配置也不容忽视。session.sa ve_handler 默认是 files,session.sa ve_path 通常设为 /var/lib/php/session。如果使用Redis存储session,可以修改为:

session.sa ve_handler = redis
session.sa ve_path = "tcp://192.168.2.20:6380?auth=china"

session.gc_probability 和 session.gc_divisor 控制垃圾回收的概率,默认是 1/1000,即每个请求有0.1%的概率启动gc进程。session.gc_maxlifetime 默认为1440秒。

php-fpm.conf重要参数

php-fpm.conf 对性能影响很大,值得重点关注:

pid = run/php-fpm.pid - 建议开启,方便管理进程。
error_log = log/php-fpm.log - 错误日志位置。
log_level = notice - 日志级别,生产环境建议设为notice或warning。
pm = dynamic - 进程管理方式,dynamic根据负载动态调整,static则固定进程数。专用服务器建议用static。
pm.max_children - 子进程最大数,取决于内存大小。
pm.start_servers - 启动时的进程数。
pm.min_spare_serverspm.max_spare_servers - 控制空闲进程数,避免频繁创建和销毁进程。
pm.max_requests = 1000 - 每个子进程重生之前服务的请求数,对防止内存泄漏很有用。

另外,request_terminate_timeout 设置单个请求的超时时间,如果经常出现502错误,可以尝试调整这个参数。request_slowlog_timeout 和 slowlog 配合使用,可以记录慢请求的堆栈信息,对性能调优很有帮助。

扩展MySQL

MySQLi扩展的安装比较简单。在 php.ini 中配置 extension_dir 指向ext目录,然后启用 extension=mysqli 即可。

验证是否成功:

phpinfo();
var_dump(extension_loaded('mysqli'));
var_dump(extension_loaded('gettext'));

如果返回true,说明扩展已经正常加载。

本文转载于:https://blog.csdn.net/kexin178/article/details/112867245 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注