好几个月之间其实已经配置过 LAMP LNMP 等等一些配置, 以前配置都是按照晚上抄的, 基本都能配置出来, 现重头学想自己配置下, 但是发现好多配置都忘了 , 中间踩了几个坑, 记录下, 也更彻底的学习下.....
./configure --prefix=/usr/local/php7
--enable-fpm 以 fpm 模式安装, 这个还可以改成 --with-apxs2=PATH 模式, 两者只能取其一
--enable-so
--with-config-file-path=/etc 只能配置文件位置
--with-config-file-scan-dir=/etc/PHP.d 可以读取这个目录下的配合文件
- --with-openssl
- --with-linxml-dir
- --with-bz2
- --with-curl
- --with-pcre-dir
- --with-gd
- --with-jpeg-dir
- --with-PNG-dir
- --with-zlib-dir
- --with-mcrypt
--with-MySQL=/usr/local/MySQL 这个选项是多余的, 不生效, 在 php7 中有其内置的 MySQL 模块了 不用依赖于 MySQL 或 mariadb, 所以说 PHP 安装顺序放在那里都行
- --with-mysqli
- --with-MySQL-sock
- --with-pdo-MySQL
- --enable-sockets
这次编译的呢是 PHP 独立模式的, 不是作为 apache 模块形式运行的, 所有就开启了 --enable-fpm, 这样的好处是 PHP 可以独立与任何一台机器运行
但是, 上面的参数并不是完整的, 有很多的参数没添加上..
遇到的问题是, 在使用 phpMyadmin 的时候
然后就开始在网上搜啊搜的, 找了好多也没解决, 不能说网上的方法不对, 只是安装方式不同而已, 网上的方法大部分是这样的
或者是这样的
但是我的都不是这样的, 以上说的可能是直接 yum 安装的 PHP, 具体我的为什么出现这种情况 还需要看 ./configure 的选项了, 因为我没有 开启
---enable-mbstring Enable multibyte string support
所有就会出现这样的问题, 解决方案, 动态编译 mbstrin
- cd /root/pakger/PHP-7.1.23/ext/mbstring/
- /usr/local/php7/bin/phpize
- ./configure --with-PHP-config=/usr/local/php7/bin/PHP-config
- make && make install
- cd /usr/local/php7/lib/PHP/extensions/no-debug-non-zts-20160303/
也就这几部, 首先 cd 到 PHP 的源目录中的 / ext/mbstring 中
然后运行 /usr/local/php7/bin/phpize 会生成一个 configure 的文件
最后直接使用期编译安装到上面指定的位置即可, 编译安装完以后会出现此模块的路径 *** 路径到 PHP.INI 中 如下图:
据对路径方式....
然后重启 PHP-fpm 即可, 当然想要和 apache 连接上还需要配置 apachere 配置文件
因为这里是以 fpm 形式安装的, 所以和模块形式的配置是不一样的, 除了添加
以外 还需要添加
以上两行, 大概意思是让 PHP 请求的页面都走这个路径...
而以模块形式安装 PHP 的应配置为
到此基本就完事了, 然后就是配置一下 PHP 的配置文件之类的...
另外 PHP 的配置文件挺多的, 它为啥不能放在一个配置文件下面的::
因此, 这篇文章主要对这三个 PHP 配置文件的进行简单说明, 具体的配置过程见本文末尾的 附录 部分.
1 配置 PHP.INI
PHP.INI 是 PHP 运行核心配置文件:
- ###### 避免 PHP 信息暴露在 http 头中
- expose_php = Off
- ###### 避免暴露 PHP 调用 MySQL 的错误信息
- display_errors = Off
- ###### 在关闭 display_errors 后开启 PHP 错误日志 (路径在 PHP-fpm.conf 中配置)
- log_errors = On
- ###### 设置 PHP 的扩展库路径
- extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-non-zts-20141001/"
- ###### 设置 PHP 的 opcache 和 MySQL 动态库
- zend_extension=opcache.so
- extension=mysqli.so
- extension=pdo_mysql.so
- ###### 设置 PHP 的时区
- date.timezone = PRC
- ###### 开启 opcache
- [opcache]
- ; Determines if Zend OPCache is enabled
- opcache.enable=1
- ###### 设置 PHP 脚本允许访问的目录 (需要根据实际情况配置)
- ;open_basedir = /usr/share/nginx/html;
2 配置 PHP-fpm.conf
PHP-fpm.conf 是 PHP-fpm 进程服务的配置文件:
- ###### 设置错误日志的路径
- error_log = /var/log/PHP-fpm/error.log
- ###### 引入 www.conf 文件中的配置
- include=/usr/local/php7/etc/PHP-fpm.d/*.conf
3 配置 http://www.conf/ (在 PHP-fpm.d 目录下)
http://www.conf/ 这是 PHP-fpm 进程服务的扩展配置文件:
- ###### 设置用户和用户组
- user = nginx
- group = nginx
- ###### 根据 nginx.conf 中的配置 fastcgi_pass unix:/var/run/PHP-fpm/PHP-fpm.sock; 设置 PHP 监听
- ; listen = 127.0.0.1:9000 ##### 不建议使用
- listen = /var/run/PHP-fpm/PHP-fpm.sock
- ###### 开启慢日志
- slowlog = /var/log/PHP-fpm/$pool-slow.log
- request_slowlog_timeout = 10s
- ###### 设置 PHP 的 session 目录 (所属用户和用户组都是 nginx)
- php_value[session.save_handler] = files
- php_value[session.save_path] = /var/lib/PHP/session
- <?PHP
- phpinfo();
- $link = mysql_connect("localhost","user","passwd");
- if (!$link) echo "FAILD";
- else echo "ok";
- phpinfo();
- ?>
通用二进制安装包安装 mariadb 出了几次错误, 索性就编译安装了, 但是.. 真的挺慢的.......
其中用到了 MySQL 中的 data 专门放到一个目录或分区上
需要用到磁盘分区知识, 然后使用初始化脚本来指定 data 的位置
然后设置 MySQL 开机启动 把服务脚本添加到 init.d 目录下等
总结
来源: https://www.jb51.net/article/150395.htm