MySQL安装
报错:源 "MySQL 8.0 Community Server" 的 GPG 密钥已安装,但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。
解决:
yum install mysql-server -y --nogpgcheck
查询初始密码
grep 'temporary password' /var/log/mysqld.log
PHP及sqlsrv扩展安装
微软官方
Linux and macOS Installation for the Drivers for PHP - PHP drivers for SQL Server | Microsoft Learn
其他教程参考:
php7.3 centos7.9安装sqlserver扩展_centos php sqlserver-CSDN博客
这个教程可能会报错:undefined symbol: php_pdo_register_driver in Unknown on line 0
解决方案是 将pdo_sqlsrv放到 pdo.ini中去
vi /etc/php.d/20-pdo.ini
# 末尾增加一行
extension=pdo_sqlsrv
sqlsrv正常添加到 /etc/php.ini 中即可。
vi /etc/php.ini
# 找到有 extension=XXXXXX.so 的地方 添加即可
extension=sqlsrv.so
ODBC18安装
Install the Microsoft ODBC driver for SQL Server (Linux) - ODBC Driver for SQL Server | Microsoft Learn
#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version
#RHEL 7 and Oracle Linux 7
curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts
sudo ACCEPT_EULA=Y yum install -y msodbcsql18
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y yum install -y mssql-tools18
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo yum install -y unixODBC-devel
SSL连接报错
解决方案:跳过SSL校验
$DB_SQLSERVER = array(
'db_type' => 'sqlsrv',
'db_user' => 'xxxx',
'db_pwd' => "xxxx",
'db_host' => 'xxxxxxx',
'db_port' => '1433',
'db_name' => 'xxxxx',
'db_charset' => 'UTF8',
'db_params' => array('PDO::ATTR_CASE' => 'PDO::CASE_UPPER'),
// 解决报错:[08001] [Microsoft][ODBC Driver 18 for SQL Server]SSL 提供程序: 证书链是由不受信任的颁发机构颁发的
'db_dsn' => 'sqlsrv:Database=数据库名称;Server=IP,端口号;TrustServerCertificate=true',
);
$sql = "";
$result = M(null,null,$DB_SQLSERVER)->query($sql);
Nginx连接PHP
Nginx安装就不说了。这里记录下遇到的问题:浏览器请求始终返回 File not found.
查询nginx日志error.log:
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.188.1, server: localhost, request: "GET /index.php/Wap/Test/test HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "192.168.188.130"
排除以下原因后,依然报错。
进一步验证,直接在 nginx配置的root目录下 创建静态文件 test.txt,赋予(chmod 777)权限,依然一样。说明是nginx本身问题。(我之前一直以为是php-fpm问题)
同时 nginx安装的默认首页又是能访问的。改成自己的项目地址,就不对了。
文件确认存在,路径配置正确,赋予所有用户及用户组可以访问权限,最后还是访问不到。说明就是文件权限问题了。
解决方案:关闭 selinux 即可。它的作用简单说就是:增强型访问控制,限制到最小访问权限。
# 临时关闭,重启系统后还会开启
setenforce 0
# 永久关闭:输入命令
vi /etc/selinux/config
# 设置值为disabled即可。重启生效。
SELINUX=disabled