欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Centos7配置Apache+Mysql+PHP(含mysqli和pdo_mysql)

程序员文章站 2022-06-14 14:31:52
...

安装Apache

首先说一下我用的Apache的版本:httpd-2.4.33,不是用yum一键安装的,是用安装包+命令行一步一步装的。下面进入安装正题:

  1. 下载安装包:
wget http://archive.apache.org/dist/httpd/httpd-2.4.33.tar.gz

成功后,应该是下载到了/root路径下,我把它移动到了/usr/local/路径下,方便解压安装。

  1. 到/usr/local/路径下,解压文件:
tar -xzf  httpd-2.4.33.tar.gz

并跳转目录

cd httpd-2.4.33.tar.gz
  1. 安装依赖:
yum install openssl-devel

还要安装gcc等,./configure时会报错,则说明缺少这些工具,自行搜索用yum安装即可。

  1. 安装:
./configure --prefix=/usr/local/apache --disable-proxy --enable-ssl --with-ssl --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre
make
make install

我装过n次Apache,第一次没有报缺少apr、apr-util、pcre的错,后面几乎都报错来着,,,这个需要自行安装这三个东西:下载安装包,解压,./configure,make,make install就好了,要注意的是要安装pcre,装了pcre2会出错。

  1. 启动:
/usr/local/apache/bin/apachectl start

如果报错:
Centos7配置Apache+Mysql+PHP(含mysqli和pdo_mysql)
解决:编辑/usr/local/apache/conf/目录下的httpd.conf文件,搜索#ServerName,添加:

ServerName localhost:80

再重启即可

/usr/local/apache/bin/apachectl restart

如果使用curl+域名的命令可以得到index.html的源码则说明安装启动成功:
Centos7配置Apache+Mysql+PHP(含mysqli和pdo_mysql)
在浏览器输入地址,也可以看到“It works!”的字样。

安装Mysql

我用的Mysql的版本:mysql-8.0.18。下面进入安装正题:

  1. 下载安装包:
wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
  1. 将安装包加入到本地:
yum localinstall mysql80-community-release-el7-1.noarch.rpm
  1. 安装mysql:
yum install mysql-community-server
  1. 权限设置:
chown mysql:mysql -R /var/lib/mysql
  1. 初始化mysql:
mysqld --initialize
  1. 开启mysql:
systemctl start mysqld
  1. 查看默认密码,然后登录数据库,修改密码:
    查看默认密码:
cat /var/log/mysqld.log | grep password;

用默认密码登录:

mysql -u root -p

修改密码,输入新密码

"root"@"localhost" IDENTIFIED  BY "1234";

要注意mysql中输入的命令要加分号;哦=。=

安装PHP

Emmmm,我用的PHP的版本:PHP-7.2.6。下面进入安装正题:

  1. 安装依赖:
yum -y install wget vim pcre pcre-devel openssl openssl-devel libicu-devel gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses ncurses-devel curl curl-devel krb5-devel libidn libidn-devel openldap openldap-devel nss_ldap jemalloc-devel cmake boost-devel bison automake libevent libevent-devel gd gd-devel libtool* libmcrypt libmcrypt-devel mcrypt mhash libxslt libxslt-devel readline readline-devel gmp gmp-devel libcurl libcurl-devel openjpeg-devel

这酸爽=。=

  1. 下载安装包,解压文件:

下载:

wget http://am1.php.net/distributions/php-7.2.6.tar.gz

我也把安装包放到了/usr/local/目录下。
解压:

tar -xzf  php-7.2.6.tar.gz

进入目录:

cd /usr/local/php-7.2.6
  1. 安装:
./configure --prefix=/usr/local/php7 --exec-prefix=/usr/local/php7 --bindir=/usr/local/php7/bin --sbindir=/usr/local/php7/sbin --libdir=/usr/local/php7/lib/php --mandir=/usr/local/php7/php/man --with-config-file-path=/usr/local/php7/etc --with-mysql-sock=/var/lib/mysql/mysql.sock --with-mysqli=shared,mysqlnd --with-pdo-mysql=shared,mysqlnd --with-curl=/usr/bin/curl --with-openssl --enable-zip --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-mbregex --enable-mbstring --enable-ftp --enable-pcntl --enable-sockets --enable-soap --enable-session --enable-opcache --enable-fpm --with-fpm-user=apache --with-fpm-group=apache --without-gdbm --with-apxs2=/usr/local/apache/bin/apxs --disable-fileinfo
make
make install
  1. 配置Apache:

修改/usr/local/apache/conf/目录下的httpd.conf文件,找到LoadModule php7_module modules/libphp7.so,添加以下三行信息:

<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>

再找到DirectoryIndex index.html,将index.html改为index.php,保存即可。

至此,在/usr/local/apache/htdocs/目录下添加index.php文件,文件内容为:

<?
php phpinfo(); 
?>

重启apache:

/usr/local/apache/bin/apachectl restart

在浏览器输入地址,就可以看到PHP的配置信息了,PHP安装运行成功。

安装pdo_mysql

以为到这里就结束了吗!NoNoNo,Emmmm,最最肝疼的来了。由于php代码中用连接mysql数据库,所以还要安装mysqli和pdo_mysql这两个扩展包。
可以使用命令:

php -m

来查看目前都装了哪些扩展包,如果没有我说的这俩,那就往下看吧。

  1. 进入php源代码扩展包的目录:
cd /usr/local/php-7.2.6/ext
  1. 先来说pdo_mysql:
    进入pdo_mysql的目录
cd pdo_mysql

phpize一下:

/usr/local/php/bin/phpize

编译:


./configure --with-php-config=/usr/local/php7/bin/php-config --with-pdo-mysql=/usr/local/mysql

安装:

make
make install

成功后会生成一个pdo_mysql.so的类似路径:

Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/

把pdo_mysql.so加入php.ini,如果与我上述安装步骤一致,php.ini在/usr/local/php7/etc目录下,添加:

extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/pdo_mysql.so

并找到extension=pdo_mysql这一句,将前面的;分号去掉,保存。
重启一下apache,在用php -m的命令应该会出现pdo_mysql。

  1. 先来说mysqli:
    与pdo_mysql的安装类似,进入mysqli的目录
cd /usr/local/php-7.2.6/ext/mysqli

phpize一下:

/usr/local/php/bin/phpize

为了提前避免失败,装一下这个:

yum install mysql-devel

然后编译:

./configure --with-php-config=/usr/local/php7/bin/php-config --with-mysqli=/usr/bin/mysql_config

安装:

make
make install

成功后会生成一个mysqli.so的类似路径:

Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/

把mysqli.so加入php.ini,php.ini在/usr/local/php7/etc目录下,添加:

extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/mysqli.so

并找到extension=mysqli这一句,将前面的;分号去掉,保存。
重启一下apache,在用php -m的命令应该会出现mysqli。

PS:如果安装好了mysqli和pdo_mysql的话,在浏览器上显示的phpinfo中会有:

Centos7配置Apache+Mysql+PHP(含mysqli和pdo_mysql)
Centos7配置Apache+Mysql+PHP(含mysqli和pdo_mysql)
Centos7配置Apache+Mysql+PHP(含mysqli和pdo_mysql)
祝你成功(。・_・。)

其他

又以为结束了吗!此处附上一些我踩的坑ε=(´ο`*)))

  1. php安装make出现“collect2:error:ldreturned1exitstatus”
    错误提示:
collect2: error: ld returned 1 exit status

解决办法:
在php-7.2.6这个源码目录下找到 Makefile文件,打开找到 EXTRA_LIBS这一行,在行末添加 ‘ -llber ‘ 保存退出再次make

EXTRA_LIBS 行:

EXTRA_LIBS = -lcrypt -lz -lexslt -lcrypt -lrt -lmysqlclient -lmcrypt -lldap -liconv

-lfreetype -lpng -lz -ljpeg -lcurl -lz -lrt -lm -ldl -lnsl -lxml2 -lz -lm -ldl -lssl

-lcrypto -lcurl -lxml2 -lz -lm -ldl -lssl -lcrypto -lxml2 -lz -lm -ldl -lxml2 -lz -

lm -ldl -lcrypt -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lxml2 -

lz -lm -ldl -lxslt -lxml2 -lz -ldl -lm -lcrypt -llber

make之前!
一定要先使用一下make clean命令,不然还是会报错=。=

  1. PHP连接mysql8.0出错“SQLSTATE[HY000] [2054] The server requested authentication method unknow…
    这可能是mysql默认使用 caching_sha2_password
    作为默认的身份验证插件,而不再是 mysql_native_password
    ,但是客户端暂时不支持这个插件导致的。
    解决:
    在打开/etc路径下的my.cnf文件,在 [mysqld]
    中添加下边的代码
default_authentication_plugin=mysql_native_password

然后重启mysql

service mysqld restart
  1. phpinfo中显示的php.ini路径不对:
    Centos7配置Apache+Mysql+PHP(含mysqli和pdo_mysql)
    Configuration File(php.ini)Path 是apache默认的php.ini路径,
    Loaded Configuration File是实际php.ini的路径。我之前出现了这一行为空的情况。
    解决:
    在/usr/local/apache/conf路径下,打开httpd.conf文件,在最后添加一行:
PHPIniDir /usr/local/php7/etc/php.ini

重启apache,phpinfo显示的路径就会正确了。

  1. 以为还没结束吗!我写不下去了。。。装这东西装了好久,中途报错无数,记不清了=。=如果以后还有幸(咳咳)再配一遍,我再来完善。
相关标签: 服务器配置