在 CentOS 系统中,使用 PHP 连接 MySQL 数据库通常涉及以下几个步骤:
下面详细介绍每个步骤:
首先,确保你的系统已经更新,并安装 PHP 及其 MySQL 扩展。
# 更新系统
sudo yum update -y
# 安装 EPEL 仓库(如果尚未安装)
sudo yum install epel-release -y
# 安装 Remi 仓库以获取最新版本的 PHP(可选)
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
# 启用 Remi 的 PHP 7.4 模块(根据需要选择版本)
sudo yum-config-manager --enable remi-php74
# 安装 PHP 及常用扩展
sudo yum install php php-mysqlnd php-pdo php-gd php-mbstring php-xml php-pear php-bcmath -y
# 重启 web 服务器(例如 Apache)
sudo systemctl restart httpd
注意: 根据你的实际需求选择合适的 PHP 版本。你可以使用 yum list available php* 查看可用的 PHP 版本。
安装完 PHP 及其 MySQL 扩展后,通常无需额外配置即可连接 MySQL。但你可以检查 php.ini 文件以确保相关设置正确。
# 查找 php.ini 文件位置
php --ini
# 编辑 php.ini(例如使用 vim)
sudo vi /etc/php.ini
# 确保以下行未被注释(取消注释):
;extension=mysqli
;extension=pdo_mysql
修改后,保存并退出编辑器,然后重启 web 服务器:
sudo systemctl restart httpd
创建一个 PHP 文件(例如 connect.php),并使用 mysqli 或 PDO 扩展连接 MySQL 数据库。
使用 mysqli 扩展的示例:
<?php
// 数据库连接参数
$servername = "localhost"; // 数据库服务器地址
$username = "your_username"; // 数据库用户名
$password = "your_password"; // 数据库密码
$dbname = "your_database"; // 数据库名称
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
// 关闭连接
$conn->close();
?>
使用 PDO 扩展的示例:
<?php
// 数据库连接参数
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";
try {
// 创建 PDO 实例
$conn = new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8", $username, $password);
// 设置 PDO 错误模式为异常
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "连接成功";
} catch(PDOException $e) {
echo "连接失败: " . $e->getMessage();
}
// 关闭连接
$conn = null;
?>
将编写好的 PHP 脚本上传到你的 web 服务器目录(例如 /var/www/html/),然后通过浏览器访问该文件。
# 假设使用 Apache,将 connect.php 放在 /var/www/html/
sudo cp connect.php /var/www/html/
# 在浏览器中访问
http://your_server_ip/connect.php
如果连接成功,你将看到相应的成功消息(例如“连接成功”)。如果连接失败,请检查以下几点:
数据库服务器是否运行:确保 MySQL 服务正在运行。
sudo systemctl status mysqld
如果未运行,启动它:
sudo systemctl start mysqld
数据库凭据是否正确:确认 PHP 脚本中的用户名、密码和数据库名称是否正确。
防火墙设置:确保防火墙允许来自 web 服务器的 MySQL 连接(默认端口 3306)。
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
sudo firewall-cmd --reload
SELinux 设置:如果启用了 SELinux,可能需要调整相关策略以允许 PHP 连接 MySQL。
sudo setsebool -P httpd_can_network_connect_db 1
使用环境变量管理数据库凭据:为了安全起见,避免在 PHP 脚本中硬编码数据库凭据。可以使用环境变量或配置文件,并确保这些文件的权限设置正确。
错误处理:在生产环境中,避免将详细的错误信息暴露给用户。可以记录错误日志以便调试。
使用预处理语句:为了防止 SQL 注入攻击,建议使用预处理语句(Prepared Statements)进行数据库操作。
通过以上步骤,你应该能够在 CentOS 系统中使用 PHP 成功连接 MySQL 数据库。如果在过程中遇到问题,请检查错误日志以获取更多信息,并根据具体情况进行调整。