【发布时间】:2015-02-25 04:07:23
【问题描述】:
我在 ESXI 上的虚拟 VMWARE 测试环境中运行两台 Ubuntu 服务器 (ubuntu-14.10-server-amd64.)。
- 第一台服务器是后端 mysql 服务器。 IP:192.168.253.140
- 第二台服务器有一个带有 PHP 的 Apache2 服务来提供网页服务。 IP:192.168.253.143
1 MYSQL 服务器:192.168.253.140
A) 我配置了服务器,使 2 台特定机器的 2 个用户能够连接到特定数据库。
用户 'apache',让 apache 服务器连接到 mysql 服务器:
create user 'apache'@'192.168.253.143' IDENTIFIED BY 'abc123';
grant ALL PRIVILEGES ON Modulus_Docker_IW.* TO 'apache'@'192.168.253.143' WITH GRANT OPTION;
用户 'pc',让我自己的电脑通过 WAMP 服务器 (PHP) 连接到远程 mysql 服务器。
create user 'pc'@'192.168.253.1' IDENTIFIED BY 'abc123';
grant ALL PRIVILEGES ON Modulus_Docker_IW.* TO 'pc'@'192.168.253.1' WITH GRANT OPTION;
FLUSH PRIVILEGES; FLUSH HOSTS;
B) 我还配置了绑定 /etc/mysql/my.cnf 以便 mysql 服务器接受任何主机(不仅是本地主机)
bind-address = 0.0.0.0
2 APACHE 服务器:192.168.253.143
Apache 服务器已安装,我在服务器上上传了我的测试 php 页面。这是一个从 mysqlserver 上的数据库获取用户名和密码的简单页面。
我在 Dreamweaver 中与“pc”用户创建了一个连接,我可以检索一些数据,使用 WAMP 服务器处理 PHP。
如果我将文件上传到远程 Apache 服务器,我将连接字符串更改为 apache 用户并希望获得最好的结果。但我只是得到了一个没有任何内容的空白页面......
我必须在 Apache2 中做些什么来允许到 mysqlserver 的传出或传入连接吗?
PHP代码:
<?php
$username = "pc";
$password = "abc123";
$host="192.168.253.140";
$database="Modulus_Docker_IW";
$link = mysql_connect($host, $username, $password);
if (!$link) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_select_db ($database, $link);
$strSQL = "SELECT naam, paswoord FROM tblUsers ORDER BY naam ASC";
$result = mysql_query( $strSQL, $link );
mysql_close($link);
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<p>echo 'Connected successfully';<p>
<?php
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo "Naam :{$row['naam']} <br> ".
"--------------------------------<br>";
}
?>
</body>
</html>
感谢您的 cmets。我现在从 apache php 获得一些调试信息。
致命错误:调用未定义的函数 mysql_connect() /var/www/html/modulus/connectHand.php 在第 7 行
好的,解决了:在PHP/Apache: PHP Fatal error: Call to undefined function mysql_connect()找到解决方案
我没有在 apache 服务器上安装“sudo apt-get install php5-mysql”。
感谢您的快速回复。
【问题讨论】:
-
PHP 中的空白页(“白屏死机”)意味着发生了致命的 500 错误,您应该查看 Apache 错误日志以了解详细信息。在开发和测试代码时,打开 PHP 的 display_errors 以便它们显示在屏幕上,但在生产中禁用它。在脚本顶部
error_reporting(E_ALL); ini_set('display_errors', 1);或 php.ini 中error_reporting = E_ALL和display_errors = On但同样不要忘记在生产中关闭 display_errors。 -
现在在 /etc/php5/apache2/php.init ?? error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED and display_errors = On
-
将其更改为
E_ALL,这样就不会抑制通知和弃用。然后查看/var/log/apache2/error_log或该 Ubuntu 服务器上的任何错误日志路径。某些事情未能导致空白屏幕。请注意,您必须在更改 php.ini 后重新启动 Apache -
好的,所以没有安装 mysql 扩展。您需要
apt-get install php5-mysqlnd但请注意mysql_*()函数已弃用。你应该开始学习使用mysqli_*()或 PDO。 -
是的,这就是问题所在...感谢您的快速回复