返回
基础
分类

(饥人谷官网后台语言 php,在php脚本中连接mysql比较简单

日期: 2020-01-02 07:56 浏览次数 : 129

php无法连接到mysql

背景:

使用lighttpd作为web服务器,php作为服务器脚本,mysql作为数据库。当浏览器客户端访问的时候,服务器php脚本会尝试连接mysql,查询数据并且返回给客户端。但是在调试的过程中发生两次,无法连接mysql的情况。这里作一下记录。

正文:

在php脚本中连接mysql比较简单,先贴一下代码

<?php
$servername = "192.168.110.2";
$port=3306;
$username = "username";
$password = "password";
$dbname = "testDB";
$socket="mysqli.default_socket";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname,$port,$socket);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?>

(1)上面这段代码是可以运行的

必赢手机登录网址 ,如果在命令行界面中采用"php +脚本名称"这样的方式运行,代码是可以顺利打印出 mysql 中某个table的数据。

(2)但是当我通过web浏览器访问这个脚本的时候,却没有出现我想要的结果,代码死在了 mysql 连接那里。

后来分析了一下原因,应该是mysql配置参数的问题。

$server="192.168.110.2";

这里采用的是远程连接mysql的方式,但是默认mysql安装的时候,只监听127.0.0 .1(也就是本机的IP)。

所以如果要让mysql可以远程访问,需要配置mysql监听的IP。

打开mysql的配置文件 /etc/mysql/my.cnf,把下面这行注释掉。

bind-address = 127.0.0.1

(3)注释完之后,还有一个问题需要注意

就是如果使用root用户去远程访问mysql的时候,会弹出发生权限问题(在mysql本机调试的时候不会出现,但是远程连接的时候会出现)。

解决办法:创建一个普通用户,并且为这个用户添加修改或者查询mysql的权限,然后使用这个普通用户去访问mysql。

背景: 使用lighttpd作为web服务器,php作为服务器脚本,mysql作为数据库。当浏览器客户端访问的时候,服务器php脚本会尝...

在vmware虚拟机中安装ubuntu-server16.04系统,是一台空白的ubuntu系统,搭建lamp环境。

动手

基本设置

mac下配置Apache+PHP+MySQL环境

必赢手机登录网址 1

开启 Apache.png

必赢手机登录网址 2

index-php.png

必赢手机登录网址 3

进入MySQL.png

1. 设置root密码

sudo passwd

  • 切换到root用户:su 或 su - 或su root
  • 切换到普通用户:su 用户名或exit

问答

2. 更新源

sudo apt-get update

1. 简单描述下 web 服务器、PHP、数据库、浏览器是如何实现动态网站的?

  1. 用户通过浏览器输入地址,浏览器首先向 DNS 服务器发出请求,DNS 服务器返回网站的实际 IP 地址。
  2. web 服务器时刻监控来自互联网的请求,根据请求返回相应的资源。
  3. 如果需要与服务器动态交互,就得用到脚本语言(例如:PHP)。通过服务器端获得的脚本语言具有访问服务器本地资源,数据库的权限,根据你请求的内容,脚本解析后返回给服务器,服务器再返回给你。
  4. 数据库主要用来动态存储数据,方便查找,插入,查询,删除等操作。
  5. 最后,浏览器将返回的资源解析,呈现出用户所看到的网页内容。

安装常用软件

2. 常见的 WEB 服务器有哪些?

  1. Nginx,是一个网页服务器,它能反向代理 HTTP, HTTPS, SMTP, POP3, IMAP 的协议链接,以及一个负载均衡器和一个HTTP缓存。是一款面向性能设计的 HTTP 服务器,相较于Apache、lighttpd 具有占有内存少,稳定性高等优势。维基-Nginx
  2. Apache,是 Apache 软件基金会的一个开放源代码的网页服务器软件,可以在大多数电脑操作系统中运行,由于其跨平台和安全性。被广泛使用,是最流行的Web服务器软件之一。它快速、可靠并且可通过简单的 API 扩充,将 Perl/Python 等解释器编译到服务器中。维基-Apache
  3. IIS(Internet Information Services),是由微软公司提供的基于运行 Microsoft Windows 的互联网基本服务。

1.SSH

  • 安装SSH

sudo apt-get install openssh-server

  • 启动状态

service ssh status/start/stop/restart

service ssh status/start/stop/restart 
或
/etc/init.d/ssh status/start/stop/restart

实际上,service命令就是执行/etc/init.d脚本,二者功能是一样的

检查是否安装了ssh.

ps -e | grep ssh

有sshd说明已启动,没有则需要安装

jhw2@ubuntu:~$ ps -e | grep ssh
  3481 ?        00:00:00 sshd
  3598 ?        00:00:00 sshd
  3619 ?        00:00:00 sshd
jhw2@ubuntu:~$ 

安装SSH之后就可以使用xshell连接虚拟机中的ubuntu系统进行操作了。

3. 打开浏览器,在地址栏输入 http://jirengu.com 页面展现了饥人谷官网的信息,整个过程发生了什么?(饥人谷官网后台语言 php,web服务器 nginx,数据库 mysql)

  1. 通过域名,查找服务器的 IP 地址(DNS 解析)
  • 查找浏览器缓存(是否有缓存 DNS 记录),有的话,直接使用;
  • 查找系统本地的 host 文件是否有这个域名的映射关系
  • 查找路由器缓存;
  • 查找 ISP 缓存;
  • 从顶级域名服务器的根域名服务器查找。
  1. 浏览器得到 IP 地址后,打包 HTTP 请求
  2. 通过 TCP 协议与 ngnix 服务器创建连接(三次握手),然后浏览器向服务器发送请求
  3. ngnix 服务器接受 HTTP 请求,Web Server 进行相应的初步处理,使用服务器脚本( PHP )生成页面
  4. 服务器脚本(利用 Web Framework)调用本地和客户端传来的数据,生成页面
  5. Web Server 将生成的页面作为 HTTP 响应的 body,根据不同的处理结果生成 HTTP header,发回给客户端
  6. 客户端(浏览器)接收到 HTTP 响应后(通常第一个请求得到的 HTTP 响应的 body 里是 HTML 代码),开始对 HTML 代码进行解析
  7. 解析过程中,如果需要引用服务器上的资源(额外的 CSS 、JS 代码、图片、音视频等),再向 Web Server 发送请求,Web Server 找到对应的资源再发送回来
  8. 具体解析渲染过程如下:
  • 解析 HTML 生成 DOM 树
  • 解析 CSS 生成 CSDOM 树
  • 组合 DOM 和 CSDOM 生成渲染树
  • 遇到 JavaScript 解析 JavaScript,阻塞后面的解析和渲染
  • 最后进行页面绘制

参考:

  1. 从输入URL到页面加载完成的过程-DNS解析域名过程
  2. Web 建站技术中,HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、ASP.NET、Web Services 是什么?

2. vim

安装vim

sudo apt-get install vim

搭建LAMP

1. 安装Apache

sudo apt-get install apache2

  • 查看是否安装Apache,以下是安装成功的信息
jhw2@ubuntu:~$ apache2 -v
Server version: Apache/2.4.18 (Ubuntu)
Server built:   2016-07-14T12:32:26
jhw2@ubuntu:~$ 
  • 测试:浏览器访问http://ubuntu的IP,出现IT works!网页

  • 启动/停止/重启服务:

service apache2 status/start/stop/restart

  • web目录

/var/www

  • 安装目录:

/etc/apache2/

  • 全局目录:

/etc/apache2/apache2.conf

  • 监听端口:

/etc/apache2/ports.conf

  • 虚拟主机:

/etc/apache2/sites-enabled/00-default.conf

2. 安装MySQL并设置远程访问

一、 安装MySQL

  1. 安装需要使用root账号,如果不会设置root账号的请自行google。安装mysql过程中,需要设置mysql的root账号的密码,不要忽略了。
jhw2@ubuntu:~$ sudo apt-get install mysql-server
jhw2@ubuntu:~$ sudo apt-get isntall mysql-client
jhw2@ubuntu:~$ sudo apt-get install libmysqlclient-dev
  1. 以上3个软件包安装完成后,使用如下命令查询是否安装成功:
sudo netstat -tap | grep mysql

查询结果如下图所示,表示安装成功

jhw2@ubuntu:~$ sudo netstat -tap | grep mysql
tcp        0      0 localhost:mysql         *:*                     LISTEN      6924/mysqld     
jhw2@ubuntu:~$ 

二、设置mysql远程访问

  1. 编辑mysql配置文件,把其中bind-address = 127.0.0.1注释了
//普通账号登录,没有修改权限,需要使用sudo命令
jhw2@ubuntu:~$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
  1. 使用root进入mysql命令行,执行如下2个命令,示例中mysql的root账号密码:root
jhw2@ubuntu:~$ mysql -u root -p

grant all on *.* to root@'%' identified by 'root' with grant option;

mysql> grant all on *.* to root@'%' identified by 'root' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)

==*.==:第一个代表数据库名;第二个*代表表名。这里的意思是所有数据库里的所有表都授权给用户。root:授予root账号。“%”:表示授权的用户IP可以指定,这里代表任意的IP地址都能访问MySQL数据库。“password”:分配账号对应的密码,这里密码自己替换成你的 mysql root帐号 密码。

// 刷新权限信息,也即是让我们所作的设置马上生效。
flush privileges;

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

//退出MySQL
mysql> exit
  1. 重启mysql
/etc/init.d/mysql restart

重启成功后,在其他计算机上,便可以登录。

3. 安装PHP

  • 安装PHP
jhw2@ubuntu:~$ sudo apt-get install php7.0 -y

查看PHP是否安装成功,显示结果如下,表示安装成功

jhw2@ubuntu:~$ php -v
PHP 7.0.15-0ubuntu0.16.04.4 (cli) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.15-0ubuntu0.16.04.4, Copyright (c) 1999-2017, by Zend Technologies
jhw2@ubuntu:~$ 

4. 安装其他模块

jhw2@ubuntu:~$ sudo apt-get install libapache2-mod-php7.0
jhw2@ubuntu:~$ sudo apt-get install php7.0-mysql

//重启服务
jhw2@ubuntu:~$ sudo service apache2 restart
jhw2@ubuntu:~$ sudo service mysql restart

测试Apache能否解析PHP

jhw2@ubuntu:~$ sudo vim /var/www/html/phpinfo.php

文件phpinfo.php中代码如下:

<?php echo phpinfo();?>

浏览器访问:http://ubuntu地址/phpinfo.php,出现PHP Version网页

LANP环境搭建完成