全面详尽的 PHP 环境搭建教程

目录

目录

PHP 环境搭建概述

在 Windows 上搭建 PHP 环境

使用集成环境 XAMPP

安装步骤

配置和测试

常用配置

手动安装 Apache、PHP 和 MySQL

安装 Apache

安装 PHP

安装 MySQL

配置 PHP 连接 MySQL

在 Linux 上搭建 PHP 环境

使用 LAMP 方案

安装 Apache

安装 MySQL 或 MariaDB

安装 PHP

配置 Apache

重启 Apache

测试 PHP

安装和配置 Nginx、PHP-FPM 和 MySQL

安装 Nginx

安装 PHP-FPM

配置 Nginx

测试 PHP

在 macOS 上搭建 PHP 环境

使用 MAMP 集成环境

安装 MAMP

配置和测试

使用 Homebrew 手动安装

安装 Homebrew

安装 Apache

安装 PHP

安装 MySQL

配置 Apache

测试 PHP

常见问题及解决方案

Apache 无法启动

PHP 脚本不执行,浏览器直接下载

MySQL 无法连接

权限问题

防火墙阻止访问

总结

参考资料


PHP(Hypertext Preprocessor)是一种广泛应用的开源脚本语言,特别适用于 Web 开发,并可嵌入 HTML 中。为了开始使用 PHP,首先需要在本地或服务器上搭建一个 PHP 运行环境。本教程将详细介绍如何在不同操作系统下搭建 PHP 开发环境,包括 Windows、Linux 和 macOS。我们将涵盖手动搭建和使用集成环境两种方式,并提供完整的配置步骤和注意事项,帮助您顺利完成环境搭建。


PHP 环境搭建概述

在开始编写 PHP 程序之前,需要搭建一个能运行 PHP 脚本的环境。通常,这个环境包括:

  • Web 服务器:如 Apache、Nginx 等,用于处理 HTTP 请求。
  • PHP 解析器:解释和运行 PHP 脚本。
  • 数据库服务器:如 MySQL、MariaDB,用于存储和管理数据。

为了方便开发者,市面上有许多集成了以上组件的安装包,如 XAMPP、WAMP、MAMP 等,它们可以一次性安装所有必要的组件,节省配置时间。


在 Windows 上搭建 PHP 环境

使用集成环境 XAMPP

XAMPP 是一种易于安装的 Apache 发行版,包含 MariaDB、PHP 和 Perl,适用于 Windows、Linux 和 macOS。对于初学者和需要快速搭建环境的开发者来说,XAMPP 是一个理想的选择。

安装步骤
  1. 下载 XAMPP

    访问 XAMPP 官方网站,下载适用于 Windows 的最新版本。

  2. 运行安装程序

    双击下载的安装程序(如 xampp-windows-x64-8.0.0-0-VC15-installer.exe),可能会出现用户账户控制(UAC)提示,点击“是”继续。

  3. 选择组件

    在组件选择界面,可以选择需要安装的组件。默认情况下,Apache、MySQL、PHP 都会被选中。根据需求,可以添加或取消其他组件。

    组件描述
    ApacheWeb 服务器
    MySQL数据库服务器
    PHPPHP 解析器
    phpMyAdminMySQL 管理工具
    FileZilla FTPFTP 服务器(可选)
    TomcatJava 服务器(可选)
  4. 选择安装目录

    选择安装路径,建议安装在根目录下(如 C:\xampp),避免权限问题。

  5. 完成安装

    安装完成后,勾选“启动控制面板”选项,点击“完成”。

配置和测试
  1. 启动 Apache 和 MySQL

    在 XAMPP 控制面板中,点击“Start”按钮启动 Apache 和 MySQL 服务。

  2. 测试 Apache

    在浏览器中输入 http://localhost/,如果看到 XAMPP 欢迎页面,说明 Apache 运行正常。

  3. 测试 PHP

    创建一个测试文件:

    • C:\xampp\htdocs\ 目录下,新建一个文件 test.php

    • 在文件中输入以下内容:

       
      <?php
      phpinfo();
      ?>
      

    • 在浏览器中访问 http://localhost/test.php,应显示 PHP 配置信息页面。

常用配置
  • 更改 Apache 端口

    如果端口 80 被占用,可以修改 Apache 的监听端口。

    • 打开 C:\xampp\apache\conf\httpd.conf
    • Listen 80 改为 Listen 8080
    • ServerName localhost:80 改为 ServerName localhost:8080
    • 重启 Apache 服务。
  • 配置虚拟主机

    在开发多个项目时,可以配置虚拟主机方便管理。

    • 编辑 C:\xampp\apache\conf\extra\httpd-vhosts.conf,添加:

       
      <VirtualHost *:80>DocumentRoot "C:/xampp/htdocs/project1"ServerName project1.local
      </VirtualHost>
      

      修改 C:\Windows\System32\drivers\etc\hosts,添加:

       
      127.0.0.1   project1.local
      

手动安装 Apache、PHP 和 MySQL

对于需要更高控制度的开发者,可以手动安装和配置各个组件。

安装 Apache
  1. 下载 Apache

    访问 Apache Lounge,下载适用于 Windows 的二进制版本。

  2. 解压安装

    • 将下载的 ZIP 文件解压到 C:\Apache24
  3. 配置环境变量

    • C:\Apache24\bin 添加到系统环境变量 PATH 中。
  4. 测试安装

    • 打开命令提示符,输入 httpd -v,应显示 Apache 版本信息。
  5. 启动 Apache

    • 以管理员身份运行命令提示符,输入:

      httpd
      
安装 PHP
  1. 下载 PHP

    访问 PHP 官方下载页面,选择适用于 Windows 的非线程安全(NTS)版本。

  2. 解压安装

    • 将下载的 ZIP 文件解压到 C:\PHP
  3. 配置 PHP

    • php.ini-development 重命名为 php.ini

    • 编辑 php.ini,设置 extension_dir

      extension_dir = "C:\PHP\ext"
      
    • 启用必要的扩展,如 mysqlipdo_mysql 等,去掉前面的分号:

       

      extension=mysqli
      extension=pdo_mysql

  4. 配置 Apache 与 PHP 集成

    • 编辑 Apache 的配置文件 C:\Apache24\conf\httpd.conf,添加以下内容:

       

      LoadModule php_module "C:/PHP/php7apache2_4.dll"
      AddHandler application/x-httpd-php .php
      PHPIniDir "C:/PHP"

    • 确保 DocumentRoot 指向您的项目目录。

  5. 测试 PHP

    • DocumentRoot 目录下创建 index.php,内容为:

      <?php
      echo "Hello, PHP!";
      ?>
      
    • 重启 Apache 服务,访问 http://localhost/,应显示 "Hello, PHP!"。

安装 MySQL
  1. 下载 MySQL

    访问 MySQL 官方下载页面,选择适用于 Windows 的 MSI 安装程序。

  2. 安装 MySQL

    • 运行安装程序,选择“自定义”安装,按照提示完成安装。
    • 配置 root 用户密码,记住该密码用于后续连接。
  3. 测试连接

    • 打开命令提示符,输入:

      mysql -u root -p
      
    • 输入密码后,应进入 MySQL 命令行界面。

配置 PHP 连接 MySQL
  • php.ini 中确保已启用 mysqlipdo_mysql 扩展。

  • 重启 Apache 服务,测试 PHP 连接 MySQL:

    <?php
    $conn = new mysqli("localhost", "root", "yourpassword");
    if ($conn->connect_error) {die("连接失败: " . $conn->connect_error);
    }
    echo "连接成功";
    ?>
    

在 Linux 上搭建 PHP 环境

Linux 是服务器最常用的操作系统之一,以下以 Ubuntu 为例介绍如何搭建 PHP 环境。

使用 LAMP 方案

LAMP 代表 Linux、Apache、MySQL/MariaDB、PHP 的组合,是经典的 Web 开发环境。

安装 Apache
sudo apt update
sudo apt install apache2
安装 MySQL 或 MariaDB

安装 MySQL

sudo apt install mysql-server

安装 MariaDB

sudo apt install mariadb-server
安装 PHP
sudo apt install php libapache2-mod-php php-mysql
配置 Apache
  • 设置 Apache 优先解析 PHP 文件

    编辑 /etc/apache2/mods-enabled/dir.conf,将 index.php 放在第一位:

    <IfModule mod_dir.c>DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
    </IfModule>
    
  • 启用必要的模块

    sudo a2enmod php7.4  # 根据实际 PHP 版本
    
重启 Apache
sudo systemctl restart apache2
测试 PHP
  • 创建测试文件 /var/www/html/info.php,内容为:

    <?php
    phpinfo();
    ?>
    
  • 在浏览器中访问 http://your_server_ip/info.php,应显示 PHP 配置信息页面。

安装和配置 Nginx、PHP-FPM 和 MySQL

Nginx 是高性能的 Web 服务器,搭配 PHP-FPM 可以提高 PHP 应用的性能。

安装 Nginx
sudo apt update
sudo apt install nginx
安装 PHP-FPM
sudo apt install php-fpm php-mysql
配置 Nginx
  • 编辑 /etc/nginx/sites-available/default,修改服务器块:

    server {listen 80;server_name your_server_ip;root /var/www/html;index index.php index.html index.htm;location / {try_files $uri $uri/ =404;}location ~ \.php$ {include snippets/fastcgi-php.conf;fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;  # 根据实际 PHP 版本}location ~ /\.ht {deny all;}
    }
    
  • 测试 Nginx 配置:

    sudo nginx -t
    
  • 重启 Nginx:

    sudo systemctl restart nginx
    
测试 PHP
  • 创建测试文件 /var/www/html/info.php,内容同上。
  • 访问 http://your_server_ip/info.php,应显示 PHP 信息。

在 macOS 上搭建 PHP 环境

使用 MAMP 集成环境

MAMP(Macintosh, Apache, MySQL, PHP)是专为 macOS 设计的集成环境。

安装 MAMP
  1. 下载 MAMP

    访问 MAMP 官方网站,下载最新版本的 MAMP。

  2. 安装 MAMP

    • 双击下载的 DMG 文件,按照提示拖动 MAMP 到“应用程序”文件夹。
  3. 启动 MAMP

    • 进入“应用程序”文件夹,打开 MAMP。
    • 点击“Start Servers”启动 Apache 和 MySQL。
配置和测试
  • 测试 Apache 和 PHP

    • 访问 http://localhost:8888/,应看到 MAMP 欢迎页面。
    • 默认的 Web 根目录是 /Applications/MAMP/htdocs
  • 测试 PHP

    • htdocs 目录下创建 test.php,内容为:

      <?php
      phpinfo();
      ?>
      
    • 访问 http://localhost:8888/test.php,应显示 PHP 信息。

使用 Homebrew 手动安装

Homebrew 是 macOS 上的包管理器,可以方便地安装 Apache、PHP 和 MySQL。

安装 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安装 Apache
brew install httpd
  • 启动 Apache:

    sudo brew services start httpd
    
安装 PHP
brew install php
  • 启动 PHP-FPM:

    brew services start php
    
安装 MySQL
brew install mysql
  • 启动 MySQL:

    brew services start mysql
    
配置 Apache
  • 编辑 /usr/local/etc/httpd/httpd.conf,添加或修改以下内容:

    • 加载 PHP 模块:

      LoadModule php_module /usr/local/opt/php/lib/httpd/modules/libphp.so
      
    • 设置 DirectoryIndex

       

      DirectoryIndex index.php index.html

    • 配置 PHP 文件的处理:

       

      <FilesMatch \.php$>
          SetHandler application/x-httpd-php
      </FilesMatch>

  • 重启 Apache:

    sudo brew services restart httpd
    
测试 PHP
  • /usr/local/var/www 目录下创建 index.php,内容为:

    <?php
    echo "Hello, PHP on macOS!";
    ?>
    
  • 访问 http://localhost:8080/,应显示 "Hello, PHP on macOS!"。


常见问题及解决方案

Apache 无法启动

  • 端口被占用

    检查是否有其他服务占用了端口 80 或 8080。

    sudo lsof -i :80
    

    解决方案:更改 Apache 的监听端口,或停止占用端口的服务。

PHP 脚本不执行,浏览器直接下载

  • 未配置 PHP 处理

    确认 Web 服务器已正确配置 PHP 模块。

    解决方案:按照上述步骤,确保 Apache 或 Nginx 已加载 PHP 模块或已配置 PHP-FPM。

MySQL 无法连接

  • 密码错误

    检查连接时使用的用户名和密码是否正确。

  • 服务未启动

    确认 MySQL 服务已启动。

    sudo systemctl status mysql
    

权限问题

  • 文件权限不足

    确保 Web 根目录和 PHP 文件具有正确的权限。

    sudo chown -R www-data:www-data /var/www/html
    sudo chmod -R 755 /var/www/html
    

防火墙阻止访问

  • 检查防火墙设置

    确保服务器的防火墙允许 HTTP 和 HTTPS 流量。

    sudo ufw allow 'Apache Full'
    

总结

搭建 PHP 开发环境是开始 PHP 编程的第一步。无论您使用的是 Windows、Linux 还是 macOS,本教程都提供了详细的步骤和注意事项,帮助您顺利完成环境配置。

  • Windows 用户:可以选择使用 XAMPP 这样的集成环境,快速搭建开发环境;也可以手动安装 Apache、PHP 和 MySQL,获得更高的灵活性。
  • Linux 用户:LAMP 方案是经典的选择,或者使用 Nginx 和 PHP-FPM 提升性能。
  • macOS 用户:MAMP 提供了方便的集成环境;通过 Homebrew 手动安装则能更好地掌控配置。

在实际开发中,可能会遇到各种问题,本教程也提供了一些常见问题的解决方案。希望本教程能帮助您顺利搭建 PHP 开发环境,开启您的 PHP 编程之旅。


参考资料

  • PHP 官方文档
  • Apache 官方文档
  • MySQL 官方文档
  • XAMPP 官方网站
  • MAMP 官方网站
  • Homebrew 官方网站

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/880218.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全科普系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;知识分类管理&#xff0c;科普知识管理&#xff0c;案例分析管理&#xff0c;建议反馈&#xff0c;试题内容管理&#xff0c;交流论坛&#xff0c;系统管理 微信端账号功能包括&a…

基于DAMODEL——Faster-RCNN 训练与测试指南

Faster-RCNN 训练与测试指南 前言 今天我们要来实现一个经典的目标检测模型&#xff1a;Faster-Rcnn。我们使用DAMODEL云平台来实现&#xff0c;这是个很强大的云端平台&#xff0c;功能众多&#xff0c;你可以投你所好去进行你想做的事情。 1. 环境与工具准备 1.1 远程连接…

docker搭建个人网盘,支持多种格式,还能画图,一键部署

1&#xff09;效果 2&#xff09;步骤 2.1&#xff09;docker安装 docker脚本 bash <(curl -sSL https://cdn.jsdelivr.net/gh/SuperManito/LinuxMirrorsmain/DockerInstallation.sh)docker-compose脚本 curl -L "https://github.com/docker/compose/releases/late…

①无需编程 独立通道 Modbus主站EtherNet/IP转ModbusRTU/ASCII工业EIP网关串口服务器

Modbus主站EtherNet/IP转ModbusRTU/ASCII工业EIP网关串口服务器https://item.taobao.com/item.htm?ftt&id743840591638 EtherNet/IP 串口网关 EtherNet/IP 转 RS485 型号 2路总线EIP网关 MS-A1-2021 4路总线EIP网关 MS-A1-2041 4路总线EIP网关&#xff08;双网口&am…

轻量型js聊天框架Botui(附示例源码)

最近在捣鼓typecho博客&#xff0c;无意中发现一个好玩的小插件botui&#xff0c;可以实现简单的自定义聊天对话&#xff0c;因此通过"抽丝剥茧“提取出来一个简单的示例代码&#xff0c;就是一些js&#xff0c;css之类的。非常适合移植作为博客插件。 1.Botui介绍 官方文…

记录linux环境下搭建本地MQTT服务器实现mqtt的ssl加密通讯

1、ubuntu安装mosquitto sudo apt-get update//安装服务端 sudo apt-get install mosquitto//安装客户端 sudo apt-get install mosquitto-clients 2、安装openssl 3、mqtts/tls加密传输 mosquitto原生支持了TLS加密&#xff0c;TLS&#xff08;传输层安全&#xff09;是SSL&…

怎么录制游戏视频?精选5款游戏录屏软件

对于热爱游戏的你来说&#xff0c;记录游戏中的精彩瞬间并分享给朋友或粉丝&#xff0c;无疑是一种享受。然而&#xff0c;在众多录屏软件中&#xff0c;如何选择最适合你的那一款&#xff1f;今天&#xff0c;我们就为大家精选了五款游戏录屏软件&#xff0c;需要的朋友快来选…

编译原理3——词法分析

3.1词法分析器的作用 词法分析是编译的第一阶段。词法分析器的主要任务是读入源程序的输入字符、将它们组成词素&#xff0c;生成并输出一个词法单元序列&#xff0c;每个词法单元对应于一个词素。 但在这个过程中&#xff0c;词法分析器还要和语法分析器进行交互。交互&…

Redis: 特点,优势,与其他产品的区别以及高并发原理

入门Redis概述 1 &#xff09;选择Redis是因为其高性能 因为 Redis 它数据存储的机制是存在内存中的&#xff0c;减少了传统关系数据库的磁盘IO它是单线程的保证了原子性&#xff0c;它还提供了事务&#xff0c;锁等相关的机制 2 &#xff09;Redis 环境安装配置 linux 或 d…

学习制作第一个LC带通滤波器的初步认识与总结

作为业余爱好&#xff0c;之前没有接触过射频方面的知识。 收音机&#xff0c;fm调频话筒等等想必是很多人都想制作的一个入门制作。但是这个里面的振荡&#xff0c;谐振&#xff0c;滤波&#xff0c;虽然在电子报上面频频看见&#xff0c;对于普通爱好者&#xff0c;如果没有…

在视频上绘制区域:使用Vue和JavaScript实现交互式画布

在数字时代&#xff0c;交互式媒体内容的创建和消费变得越来越普遍。特别是视频内容&#xff0c;它不仅提供了视觉信息&#xff0c;还允许用户与之互动&#xff0c;从而增强了用户体验。本文将介绍如何使用Vue.js框架和JavaScript创建一个交互式组件&#xff0c;该组件允许用户…

【Docker】Docker快速入门

Docker学习笔记 一、Docker概述 为什么会出现Docker? 安卓开发流程&#xff1a;apk(java开发的)发布到应用商店&#xff0c;用户安装apk即可使用。 后端开发流程&#xff1a; jar(java开发的)带上环境发布到Docker仓库&#xff0c;用户从Docker仓库拉取镜像并部署。 总结…

Android 如何实现搜索功能:本地搜索?数据模型如何设计?数据如何展示和保存?

目录 效果图为什么需要搜索功能如何设计搜索本地的功能&#xff0c;如何维护呢&#xff1f;总结 一、效果图 二、为什么需要搜索功能 找一个选项&#xff0c;需要花非常多的时间&#xff0c;并且每次都需要指导客户在哪里&#xff0c;现在只要让他们搜索一下就可以。这也是模…

低代码平台后端搭建-阶段完结

前言 最近又要开始为跳槽做准备了&#xff0c;发现还是写博客学的效率高点&#xff0c;在总结其他技术栈之前准备先把这个专题小完结一波。在这一篇中我又试着添加了一些实际项目中可能会用到的功能点&#xff0c;用来验证这个平台的扩展性&#xff0c;以及总结一些学过的知识。…

数据库数据恢复—Oracle报错“需要更多的恢复来保持一致性”的数据恢复案例

Oracle数据库故障&检测&#xff1a; 打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性&#xff0c;数据库无法打开”。 数据库没有备份&#xff0c;无法通过备份去恢复数据库。用户方联系北亚企安数据恢复中心并提供Oracle_Home目录中的所有文件&#xff0c;…

大小端字节序 和 内存高低地址顺序

目录 1. 大小端字节序 1.1 什么是大小端字节序&#xff1f; 1.2 为什么有大小端字节序? 1.3 习题&#xff1a;用程序结果判断大端小端 2. 各种易混淆的高低地址顺序 2.1 监视窗口的地址表示【计算机标准展示方式】 2.2 横向地址表示 2.3 一个字节 与 多个字节 的地址…

C语言 | Leetcode C语言题解之第416题分割等和子集

题目&#xff1a; 题解&#xff1a; bool canPartition(int* nums, int numsSize) {if (numsSize < 2) {return false;}int sum 0, maxNum 0;for (int i 0; i < numsSize; i) {sum nums[i];maxNum fmax(maxNum, nums[i]);}if (sum & 1) {return false;}int tar…

《程序猿之设计模式实战 · 适配器模式》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

springboot文件上传+拦截器

springboot文件上传拦截器 文章目录 springboot文件上传拦截器1.静态资源访问静态目录&#xff1a; 2.文件上传文件上传配置文件书写文件上传代码 3.拦截器1.初始化拦截器2.初始化配置文件 1.静态资源访问 静态目录&#xff1a; 这里的static就是spring boot默认存放静态资源的…

ZYNQ FPGA自学笔记~操作PLL

一 时钟缓冲器、管理和路由 垂直时钟中心&#xff08;clock backbone&#xff09;将设备分为相邻的左侧和右侧区域&#xff0c;水平中心线将设备分为顶部和底部两侧。clock backbone中的资源镜像到水平相邻区域的两侧&#xff0c;从而将某些时钟资源扩展到水平相邻区域。BUFG不…