【发布时间】:2016-05-23 23:17:16
【问题描述】:
我有一个基于 codeigniter 的 php 应用程序,并且我有一个位于远程主机上的数据库,安装了所需的数据库,设置了适当的 mysql 权限并为远程连接打开了 mysql 端口,但是,当我运行应用程序时它没有'不起作用,它返回 500 错误代码。
当我解决问题时,它给出了以下错误
消息:mysqli::real_connect(): (HY000/2003): 无法连接到 '192.168.6.13' (13) 上的 MySQL 服务器
到目前为止我所尝试的:
1) 确保所有权限设置正确。
2) 确保不存在与网络相关的问题,例如阻塞的端口/主机
3) 确保已安装并启用 mysqli。
4) 创建了一个连接测试 php 脚本并从命令行运行它,它工作得很好。
5) 有趣的部分是当我从命令行运行应用程序时,它作为 root 用户和 su -s /bin/sh apache -c "php index.php". 的 apache 用户正常工作
我的参数:
1) php 版本为 PHP 5.4.16
2) 操作系统版本:CentOS Linux 版本 7.2.1511 (Core) 在 web 和 DB 上
3) 网络服务器版本 Apache/2.4.6 (CentOS)
4) mysql 版本 14.14
5) 我在 ssl 下运行我的应用程序,下面是我的配置
<VirtualHost *:443>
#### Gloabl config
DocumentRoot /var/www/bein
DirectoryIndex index.php
ServerName beinmob.com
ServerAlias www.beinmob.com
#### change basic URL to /index.php/POS_Admin/Session
RewriteEngine on
RewriteRule ^/?$ index.php/POS_Admin/Session [R]
#### change url to alias for web services
Alias /web-services /var/www/bein/index.php
Alias /POS_Admin /var/www/bein/
#### Basic Authentication for /web-services url
<Location /POS_Admin>
RewriteEngine on
# Hide the application and system directories by redirecting the request to index.php
RewriteBase /index.php
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
</Location>
<Location /web-services>
AuthName bein
AuthType Basic
AuthUserFile /etc/httpd/conf.d/beinServicePass
Require valid-user
</Location>
#### SSL configuration
SSLEngine on
SSLCertificateFile /etc/httpd/cert/certs/www_beinmob_com.crt
SSLCertificateKeyFile /etc/httpd/cert/certs/www_beinmob_com.key
SSLCertificateChainFile /etc/httpd/cert/certs/DigiCertCA.crt
</VirtualHost>
【问题讨论】:
-
您的 apache 配置无关紧要。 apache与php尝试连接mysql无关。要么你的 mysql 没有监听 TCP 连接,它没有监听那个特定的 IP,或者你使用了错误的 IP,或者 IP 以某种方式被防火墙。
标签: php mysql apache codeigniter mysqli