我会以 Linux (以 Ubuntu/Debian 为例) 和 Windows 两种主流操作系统分别进行说明,因为它们的配置方式有所不同。

核心概念
在开始之前,你需要了解几个核心组件的关系:
- Apache (Web Server):负责接收来自用户的 HTTP 请求,并将请求的文件(如 HTML, CSS, 图片)或处理结果返回给用户,它本身不直接执行 PHP 代码。
- PHP (Processor):一种服务器端脚本语言,它负责解析和执行 PHP 代码,例如连接数据库、处理业务逻辑,并生成最终的 HTML 内容。
- PHP 模块 (如
mod_php):这是连接 Apache 和 PHP 的桥梁,Apache 通过加载这个模块,将所有.php文件的请求交给 PHP 模块去处理,处理完成后再将结果返回给 Apache。
第一部分:在 Linux (Ubuntu/Debian) 上部署
这是最常见的服务器环境,推荐使用 LAMP (Linux, Apache, MySQL, PHP) 或 LEMP (Linux, Nginx, MySQL, PHP) 栈,这里我们专注 LAMP。
步骤 1:安装 LAMP 环境
打开终端,执行以下命令,一键安装 Apache、MySQL (MariaDB) 和 PHP。
# 更新软件包列表 sudo apt update # 安装 Apache, MySQL, PHP 以及一些常用的 PHP 扩展 sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql php-mbstring php-xml php-curl php-zip
apache2: Apache Web 服务器。mysql-server: MySQL 数据库服务器。php: PHP 解释器本身。libapache2-mod-php: 关键! 让 Apache 能够识别和执行 PHP 文件的模块。php-mysql,php-mbstring等:PHP 常用的扩展,用于连接数据库、处理多字节字符等。
步骤 2:启动并检查 Apache 服务
安装完成后,Apache 通常会自动启动。

# 检查 Apache 服务状态 sudo systemctl status apache2 # 如果没有运行,手动启动 sudo systemctl start apache2 # 设置 Apache 开机自启 sudo systemctl enable apache2
在浏览器中访问你的服务器 IP 地址 http://<你的服务器IP>,如果看到 "It works!" 页面,说明 Apache 已成功运行。
步骤 3:配置 PHP
默认情况下,PHP 配置文件位于 /etc/php/X.Y/apache2/php.ini (X.Y 是你的 PHP 版本号,如 4, 1 等)。
你可以根据需要修改这个文件,
# 编辑 PHP 配置文件 (使用 nano 或 vim) sudo nano /etc/php/7.4/apache2/php.ini
常见的修改项:

upload_max_filesize = 32M: 允许上传文件的最大大小。post_max_size = 32M: POST 请求的最大大小。memory_limit = 256M: PHP 脚本可使用的最大内存。display_errors = On: 在开发环境中开启错误显示,方便调试。
修改完成后,必须重启 Apache 服务才能生效:
sudo systemctl restart apache2
步骤 4:部署你的 PHP 网站
假设你的 PHP 项目文件存放在 /var/www/my-website 目录下。
-
创建网站根目录
sudo mkdir -p /var/www/my-website
-
将你的网站文件复制到该目录 你可以使用
scp,rsync, 或者 Git 将代码从本地服务器上传到/var/www/my-website。 -
设置正确的文件权限 这是非常重要的一步!Web 服务器(Apache 运行的用户通常是
www-data)需要有权限读取和执行你的网站文件。# 将目录的所有者改为 www-data sudo chown -R www-data:www-data /var/www/my-website # 给予目录和文件适当的读写执行权限 sudo chmod -R 755 /var/www/my-website
步骤 5:配置虚拟主机 (Virtual Host)
虚拟主机允许你在一台服务器上托管多个网站,每个网站都有自己的域名和配置。
-
创建虚拟主机配置文件 假设你的域名是
www.example.com。sudo nano /etc/apache2/sites-available/example.com.conf
-
粘贴以下配置内容
<VirtualHost *:80> ServerAdmin webmaster@example.com ServerName www.example.com ServerAlias example.com # 可选,访问 example.com 也指向此站 DocumentRoot /var/www/my-website <Directory /var/www/my-website> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>DocumentRoot: 指向你的网站文件目录。AllowOverride All: 允许使用.htaccess文件进行目录级别的配置(如果需要)。Require all granted: 允许所有用户访问。
-
启用虚拟主机
# 启用新配置 sudo a2ensite example.com.conf # 禁用默认的 000-default 站点 (可选) sudo a2dissite 000-default.conf # 重启 Apache 使配置生效 sudo systemctl restart apache2
步骤 6:配置 DNS 和测试
- DNS 配置:在你的域名提供商(如 GoDaddy, Namecheap)后台,将域名的 A 记录指向你的服务器 IP 地址。
- 测试:等待 DNS 生效后(可能需要几分钟),在浏览器中访问
http://www.example.com,如果能看到你的 PHP 网站,恭喜你,部署成功!
第二部分:在 Windows 上部署
在 Windows 上,推荐使用集成的安装包,如 XAMPP 或 WampServer,它们已经预先配置好了 Apache 和 PHP,大大简化了安装过程。
这里以 XAMPP 为例。
步骤 1:下载并安装 XAMPP
- 访问 XAMPP 官网。
- 下载适用于 Windows 的版本。
- 运行安装程序,按照提示进行安装,建议安装到默认路径,如
C:\xampp。
步骤 2:启动 XAMPP 控制面板
安装完成后,启动 XAMPP Control Panel。
- 在控制面板中,找到 Apache 和 MySQL 模块。
- 点击 Start 按钮来启动它们,确保它们的状态是 "Running"。
步骤 3:部署你的 PHP 网站
XAMPP 的默认网站根目录是 C:\xampp\htdocs。
- 将你的 PHP 项目文件 复制到
C:\xampp\htdocs文件夹中,或者在该文件夹内创建一个新的子文件夹(my-website)。 - 启动 Apache 和 MySQL。
- 测试:在浏览器中访问
http://localhost/my-website(如果你的项目在htdocs/my-website目录下),如果能看到你的网站,说明基本部署成功。
步骤 4:配置虚拟主机 (可选)
如果你希望使用域名(如 www.example.com)而不是 localhost 来访问网站,可以配置虚拟主机。
-
编辑
httpd-vhosts.conf文件 用记事本或代码编辑器打开C:\xampp\apache\conf\extra\httpd-vhosts.conf。 -
在文件末尾添加以下配置
<VirtualHost *:80> DocumentRoot "C:/xampp/htdocs/my-website" ServerName www.example.com ServerAlias example.com <Directory "C:/xampp/hosts/my-website"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost> -
编辑
hosts文件 这个文件用于将本地域名映射到0.0.1。- 按
Win + R,输入drivers\etc\hosts并回车。 - 用记事本打开
hosts文件。 - 在文件末尾添加一行:
0.0.1 www.example.com example.com
- 按
-
重启 Apache 在 XAMPP Control Panel 中,先 Stop Apache,然后再 Start Apache。
-
测试 现在在浏览器中访问
http://www.example.com,应该就能看到你的网站了。
常见问题与解决
-
问题:浏览器直接下载 PHP 文件,而不是解析执行。
- 原因:Apache 的
mod_php模块没有正确加载,或者 MIME 类型配置错误。 - 解决:
- Linux: 确保安装了
libapache2-mod-php并重启了 Apache,检查/etc/apache2/mods-enabled/目录下是否有php.conf或php7.x.conf的符号链接。 - Windows (XAMPP): 检查
httpd.conf文件中是否有LoadModule php_module "modules/phpXapache2_4.dll"这样的行(X 是你的 PHP 版本),并且没有被注释掉。
- Linux: 确保安装了
- 原因:Apache 的
-
问题:
Forbidden 403 You don't have permission to access...。- 原因:Web 服务器用户(Linux 下的
www-data)没有权限访问网站目录或文件。 - 解决:重新设置文件权限。
- Linux: 运行
sudo chown -R www-data:www-data /var/www/your-site和sudo chmod -R 755 /var/www/your-site。 - Windows: 检查网站文件夹的 NTFS 权限,确保
SYSTEM和Users用户组有读取和执行权限。
- Linux: 运行
- 原因:Web 服务器用户(Linux 下的
-
问题:
Internal Server Error 500。- 原因:这是一个笼统的错误,可能由 PHP 语法错误、Apache 配置错误、PHP 脚本超时等多种原因引起。
- 解决:
- 检查 PHP 代码是否有语法错误。
- Linux: 查看 Apache 的错误日志文件,通常位于
/var/log/apache2/error.log,里面会有详细的错误信息。 - Windows: 查看 XAMPP 的 Apache 错误日志,或在
php.ini中设置display_errors = On来直接在页面上看到错误。
-
问题:如何让 Apache 支持
.htaccess文件?- 原因:在虚拟主机配置中,
AllowOverride指令设置为None。 - 解决:在虚拟主机配置文件中,将对应目录的
<Directory>指令里的AllowOverride设置为All或FileInfo(如果只需要重写功能)。<Directory /var/www/my-website> AllowOverride All </Directory> - 修改后,必须重启 Apache。
- 原因:在虚拟主机配置中,
安全建议
- 不要使用 root 用户运行 Apache:默认情况下,Apache 会以低权限用户运行,这是安全的最佳实践。
- 定期更新:保持你的操作系统、Apache、PHP 和所有软件库为最新版本,以修复安全漏洞。
- 禁用不必要的目录索引:在
httpd.conf或虚拟主机配置中,确保Options指令里没有Indexes,或者将其删除,防止用户浏览目录列表。 - 配置防火墙:只开放必要的端口(如 80 HTTP, 443 HTTPS)。
希望这份详细的指南能帮助你成功部署 PHP 网站!
