Ubuntu下PHP的安装、配置与使用指南
在Linux服务器开发环境中,Ubuntu因其易用性和丰富的软件生态成为开发者的首选之一,PHP作为Web开发的核心语言之一,在Ubuntu上的部署和使用是许多开发者必备的技能,本文将详细介绍Ubuntu环境下PHP的安装、配置、开发环境搭建及常见问题解决,帮助你快速上手Ubuntu中的PHP开发。
Ubuntu下PHP的安装
Ubuntu系统提供了多个PHP版本(如PHP 7.4、8.0、8.1等),可根据项目需求选择安装,以下是两种常见安装方式:通过APT源安装(推荐新手)和通过源码编译安装(适合自定义版本)。
通过APT源安装(简单快捷)
(1)更新软件包列表
首先更新系统的软件包索引,确保获取最新的PHP版本信息:
sudo apt update
(2)安装PHP及常用扩展
Ubuntu默认源中包含多个PHP版本,可通过apt
安装,例如安装PHP 8.1:
sudo apt install php8.1
安装后可验证版本:
php -v
(3)安装PHP常用扩展
开发时通常需要安装扩展(如MySQL、GD、XML等),以PHP 8.1为例:
sudo apt install php8.1-mysql php8.1-gd php8.1-xml php8.1-curl php8.1-mbstring
扩展安装后需重启Apache/Nginx使生效(见后文服务器配置)。
通过源码编译安装(自定义版本)
若需要安装Ubuntu未提供的PHP版本(如PHP 8.3),或开启特定模块,可通过源码编译:
(1)安装编译依赖
sudo apt install build-essential libxml2-dev libssl-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libonig-dev libzip-dev
(2)下载PHP源码
从PHP官网下载最新源码(以PHP 8.3为例):
wget https://www.php.net/distributions/php-8.3.0.tar.gz tar -xzf php-8.3.0.tar.gz cd php-8.3.0
(3)配置编译参数
./configure --enable-fpm --enable-mbstring --enable-xml --enable-curl --with-mysqli --with-gd --with-jpeg --with-png --with-zlib
常用参数说明:
--enable-fpm
:启用PHP-FPM(FastCGI进程管理器,用于Nginx);--enable-mbstring
:启用多字节字符串支持;--with-mysqli
:MySQL扩展支持。
(4)编译并安装
make -j$(nproc) # 使用多核编译加速 sudo make install
编译完成后,PHP可执行文件默认位于/usr/local/bin/php
,可通过php -v
验证。
PHP环境配置:Apache与Nginx的集成
PHP需与Web服务器(Apache/Nginx)配合使用,以下是两种服务器的配置方法。
Apache服务器配置
(1)安装Apache及PHP模块
sudo apt install apache2 libapache2-mod-php8.1 # 以PHP 8.1为例
(2)配置Apache支持PHP
默认情况下,Apache已配置解析.php
文件,测试文件:
创建/var/www/html/info.php
:
sudo nano /var/www/html/info.php ```写入: ```php <?php phpinfo(); ?>
保存后访问http://服务器IP/info.php
,若显示PHP配置信息,则配置成功。
(3)配置虚拟主机(可选)
若需配置多个网站,可修改Apache虚拟主机配置。
sudo nano /etc/apache2/sites-available/example.com.conf
写入:
<VirtualHost *:80> ServerName example.com DocumentRoot /var/www/example.com <Directory /var/www/example.com> AllowOverride All </Directory> </VirtualHost>
启用配置并重启Apache:
sudo a2ensite example.com.conf sudo systemctl restart apache2
Nginx服务器配置
(1)安装Nginx及PHP-FPM
sudo apt install nginx php8.1-fpm # 以PHP 8.1为例
(2)配置Nginx解析PHP
Nginx需通过PHP-FPM处理PHP文件,修改默认站点配置:
sudo nano /etc/nginx/sites-available/default
修改server
块如下:
server { listen 80; root /var/www/html; index index.php index.html; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 根据PHP版本调整.sock路径 } }
保存后重启Nginx和PHP-FPM:
sudo systemctl restart nginx sudo systemctl restart php8.1-fpm
(3)测试PHP解析
同样创建/var/www/html/info.php
文件,访问http://服务器IP/info.php
验证。
PHP开发环境搭建
编辑器选择
- VS Code:推荐安装
PHP Intelephense
(代码智能提示)、Xdebug
(调试)插件; - PhpStorm:专业PHP IDE,支持调试、数据库管理等功能;
- Vim/Emacs:适合喜欢命令行开发的用户。
调试环境配置(以Xdebug为例)
(1)安装Xdebug
sudo apt install php-xdebug
(2)配置Xdebug
查看Xdebug配置文件路径(通常为/etc/php/8.1/cli/conf.d/20-xdebug.ini
):
sudo nano /etc/php/8.1/cli/conf.d/20-xdebug.ini ```根据Xdebug版本调整,Xdebug 3.x配置): ```ini zend_extension=xdebug xdebug.mode=debug xdebug.start_with_request=yes xdebug.client_port=9003 # 默认端口,与IDE一致 xdebug.client_host=127.0.0.1
(3)IDE配置
以VS Code为例,安装PHP Debug
插件,配置launch.json
:
{ "version": "0.2.0", "configurations": [ { "name": "Listen for Xdebug", "type": "php", "request": "launch", "port": 9003 } ] }
常用PHP命令与工具
命令行PHP脚本
PHP支持命令行执行脚本,适合运维或自动化任务:
php -f script.php # 执行PHP脚本 php -r "echo 'Hello, World!';" # 执行单行代码 php -a # 进入交互式REPL模式
Composer(PHP依赖管理)
Composer是PHP的依赖管理工具,用于安装和管理第三方库:
(1)安装Composer
curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer
(2)使用Composer
创建新项目(以Laravel为例):
composer create-project laravel/laravel my-project
添加依赖:
composer require monolog/monolog
常见问题解决
提示“Command 'php' not found”
未安装PHP或未添加到环境变量,安装PHP后检查路径:
which php # 查看PHP可执行文件路径 sudo ln -s /usr/bin/php8.1 /usr/bin/php # 创建软链接(若路径不匹配)
Apache/Nginx解析PHP文件失败
- Apache:检查
libapache2-mod-php
是否安装,重启Apache:sudo systemctl restart apache2
; - Nginx:检查
fastcgi_pass
路径是否正确(/run/php/php*.sock
),确认PHP-FPM运行状态:sudo systemctl status php8.1-fpm
。
PHP-FPM启动失败
检查配置文件语法:
sudo php-fpm8.1 --test # 验证配置文件 sudo nano /etc/php/8.1/fpm/php-fpm.conf # 修复语法错误
在Ubuntu上使用
还没有评论,来说两句吧...