简介
内容 主要介绍 PHP + Mysql 环境搭建
php 以前用过,时间长了,就忘记了,写个帖子,防止遗忘
获取
Docker大法好 多余内容省略
编写 docker-compose.yml
1 | version: '3' |
文件结构1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16.
├── code
│ ├── testmysql.php
│ ├── test.php
├── docker-compose.yml
├── mysqldata
├── nginx
│ ├── conf.d
│ │ └── default.conf
│ └── log
├── phpfpm
│ ├── conf
│ │ └── php.ini-production
│ ├── Dockerfile
│ └── source.list
├── README.md
phpfpm Dockerfile1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19FROM php:7.0.5-fpm
# 修改软件更新源
COPY ./source.list /etc/apt/sources.list
RUN apt-get update \
&& apt-get install -y wget \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng12-dev \
libboost-dev libboost-all-dev gperf* libevent-dev \
# 安装扩展:iconv、mcrypt、zip、gd、pdo_mysql、mysqli、pcntl
&& docker-php-ext-install -j$(nproc) iconv mcrypt \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) zip gd pdo_mysql mysqli pcntl \
&& apt-get clean \
&& apt-get autoclean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
source.list 修改软件源,为了更快安装1
2
3
4
5#debian8
deb http://mirrors.aliyun.com/debian/ jessie main non-free contrib
deb http://mirrors.aliyun.com/debian/ jessie-proposed-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ jessie main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ jessie-proposed-updates main non-free contrib
Nginx default.conf
1 | server { |
执行
1 | docker-compose up -d |
测试代码
- php环境测试 test.php
1 | <?php |
看看是能看到php的信息
- php mysql 数据库连接测试
testmysql.php1
2
3
4
5<?php
$link=mysql_connect("127.0.0.1","root","123456");
if(!$link) echo "FAILD!连接错误,用户名密码不对";
else echo "OK!可以连接";
?>
我这里浏览器访问 出现 500
加上1
2
3ini_set("display_errors","On");
error_reporting(E_ALL);
看下什么原因出错?
1 | <?php |
Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /usr/share/nginx/html/testmysql.php:6 Stack trace: #0 {main} thrown in /usr/share/nginx/html/testmysql.php on line 6
mysql_connect 函数无效?
我查看了一下 php 信息里面有mysql 库,不是库的原因
最后,找到原因,是因为 我用的是php最新版本 7.0
mysql_connect 在5.0的时候可以使用,到7.0的时候已经被放弃了,是废弃函数
PHP7中貌似已经彻底不支持了,根据官网说明,取而代之的是如下两个:
本扩展自 PHP 5.5.0 起已废弃,并在将来会被移除。应使用 MySQLi 或 PDOMySQL 扩展来替换之。参见 MySQL:选择 API 指南以及相关 FAQ 以获取更多信息。用以替代本函数的有:
mysqli_connect()
PDO::__construct()
使用时,不要在使用mysql_connect了,可以换用mysqli_connect(),用法基本类似吧,据说是面向对象的库。
php.ini中,也只有extension=php_mysqli.dll,而不再有extension=php_mysql.dll这个拓展了。
修改 testmysql.php1
2
3
4
5
6
7
8<?php
ini_set("display_errors","On");
error_reporting(E_ALL);
$link=mysqli_connect("127.0.0.1","root","123456");
if(!$link) echo "FAILD!连接错误,用户名密码不对";
else echo "OK!可以连接";
?>
类似的还有 mysql的其他函数