zoukankan      html  css  js  c++  java
  • Zabbix的安装与部署---问题处理(php65.6.28 mysqli 报错误 处理)

    1)php65.6.28  mysqli  报错误 处理

    http://www.xiaochengfu.com/index.php/index/detail/aid/92.html

    2)linux下php添加mysqli扩展mysqli_api.lo错误

    http://jingyan.baidu.com/article/a3f121e4cb684afc9152bb73.html

    一、前期准备

    • MySQL的安装与配置
      具体步骤参见我之前的博客:(二)MySQL的安装与配置
    • 为了配置Zabbix前端,我需要Nginx和PHP的支持,具体步骤参见:Nginx的安装与配置以及如何支持PHP。但是因为安装配置Zabbix前端,因此安装PHP需要加入特定选项,因此PHP的具体安装方法将在文章末尾根据排错过程给出。
    • 依赖包安装

      # yum -y install net-snmp net-snmp-devel perl-DBI php-gd php-xml php-bcmath fping OpenIPMI-devel php-mbstring

      二. 安装zabbix

    • 1.将源码中的zabbix-3.0.4/database/mysql 下的sql文件导入zabbix数据库(必须按照以下顺序到入)

    首先创建名为 zabbix 的数据库
    mysql> create database zabbix default character set utf8;
    
    # tar -xvzf zabbix-3.0.4.tar.gz
    # cd zabbix-3.0.4
    # /usr/local/mysql/bin/mysql -u root -h localhost zabbix  < schema.sql
    # /usr/local/mysql/bin/mysql -u root -h localhost zabbix  < images.sql
    # /usr/local/mysql/bin/mysql -u root -h localhost zabbix  < data.sql
    • 2.创建用户和组
    # groupadd zabbix
    # useradd -g zabbix zabbix
    • 3.安装zabbix服务端(服务端本身也要监控,因此同时安装agent)
    # ./configure --prefix=/usr/local/zabbix/ --enable-server  --enable-agent --with-mysql --with-net-snmp
    安装zabbix提示:
    checking for net-snmp-config... no
    configure: error: Invalid Net-SNMP directory - unable to find net-snmp-config
    
    解决方案:
    # yum install net-snmp-devel -y
    • 4.修改配置文件

    ListenPort=10051
    LogFile=/tmp/zabbix_server.log
    DBHost=localhost
    DBName=zabbix
    DBUser=root #我直接用root用户作为zabbix数据库的用户,且没有设置密码
    ListenIP=127.0.0.1

    • 5.启动zabbix
    # /usr/local/zabbix/sbin/zabbix_server
    
    启动时报错:
    Starting zabbix_server:  /usr/local/zabbix/sbin/zabbix_server: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
    
    解决方案:
    # locate libmysqlclient.so.18
    # echo "/usr/local/mysql/lib" >> /etc/ld.so.conf
    # ldconfig

    三、配置 web界面支持

    若要web界面的支持,则需要Nginx(需要php-fpm)和PHP的支持,安装方法参见文章开头的传送连接。Nginx和PHP安装完成后,进行如下操作。

    • 1.将zabbix-3.0.4/frontends/php中的所有文件拷贝进入web服务的root目录下中的zabbix中,此处我用的是Nginx作为web服务器。
    # cd zabbix-3.0.4/frontends/php
    # mkdir /usr/local/nginx/html/zabbix/
    # cp -a . /usr/local/nginx/html/zabbix/
    启动nginx和php-fpm
    # /usr/local/nginx/sbin/nginx
    # /usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini

    在安装PHP时,一定要看清Zabbix的官方文档上给出的 Requirements,否则在编译安装PHP时会漏掉很多支持组件的信息,导致无法顺利的在web界面配置Zabbix前端。

    以下是我所踩过的坑:

    • 错误1
    类似出现:PHP option "post_max_size"    8M    16M    Fail 等
    需要更改php.ini文件,但是在安装PHP时需要指定php的配置文件的存放位置,如我的指定为: --with-config-file-path=/usr/local/php/etc 
    然后将源码里面的php.ini-production 拷贝到/usr/local/php/etc/php.ini
    
    注意:在编译安装完成php后,配置完成启动php-fpm时,直接执行/usr/local/php/sbin/php-fpm 虽然可
    以启动,但是这样的话,php.ini文件是没有生效的,这就会导致即使你更改了php.ini里面的参数,Zabbix前端检测依然无法通过。解决方法是按照以下方式启动php-fpm:
    # /usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini
    • 错误2
    PHP bcmath    off        Fail                --enable-bcmath    
    PHP mbstring    off        Fail            --enable-mbstring
    PHP sockets    off        Fail                --enable-sockets等
    
    这些错误只要在安装PHP时加上对应选项即可,如:--enable-bcmath
    • 错误3
    PHP databases support    off        Fail    --with-mysql=/usr/local/mysql    
    
    解决方案:
      这种错误是提示不支持MySQL,但是我们在编译安装时是指定了的,为何出错了?因为更新后的PHP版本,现在需要mysqli的支持才能行,mysqli是对mysql函数(注意这里指的是PHP中的函数)的优化,因此我们需要安装进入PHP源码中的mysqli目录下就可安装,方法如下:
    # cd php-5.6.25/ext/mysqli/
    # phpize
    # ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/usr/local/mysql/bin/mysql_config
    # make && make install
    # cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226
    # ls
    如果有mysqli.so文件,就说名安装好了。    
    接着编辑php配置文件 /usr/local/php/etc/php.ini,加入extension=mysqli.so(可以写全路径)
    
    在make && make install时出现:
    /root/soft/php-5.6.25/ext/mysqli/mysqli_api.c:36:47: error: ext/mysqlnd/mysql_float_to_double.h: No such file or directory
    make: *** [mysqli_api.lo] Error 1
    
    解决方法:编辑mysqli_api.c,然后注释掉mysql_float_to_double.h这个头文件(讲真,我不知道这样做会有什么后果)
    • 系列错误4
    PHP gd JPEG support    off        Fail        --with-jpeg-dir=DIR     GD: Set the path to libjpeg install prefix    
    解决方案:编译安装jpeg
    # wget http://www.ijg.org/files/jpegsrc.v9b.tar.gz
    # mkdir /usr/local/jpeg
    # ./configure --prefix=/usr/local/jpeg --enable-shared
    
    PHP gd PNG support    off        Fail        --with-png-dir=DIR      GD: Set the path to libpng install prefix
    解决方案:编译安装libpng
    # wget http://prdownloads.sourceforge.net/libpng/libpng-1.6.24.tar.gz?download
    # mkdir /usr/local/libpng
    # ./configure --prefix=/usr/local/libpng
    
    要编译 GD 库,需要libpng 和 libjpeg(前面已经安装了)
    PHP gd    unknown    2.0    Fail                --with-gd=DIR           Include GD support.  DIR is the GD library base install directory BUNDLED
    
    解决方案:进入PHP源码的ext/gd目录下编译安装GD库
    # yum install gd-devel
    # cd php-5.6.8/ext/gd
    # phpize
    # ./configure --with-jpeg-dir=/usr/local/jpeg --with-php-config=/usr/local/php/bin/php-config 
      提示:configure: error: png.h not found.
      解决:# yum install libpng-devel
           # make clean
           # make install
    
    我在编译php时执行源码安装的 gd(/usr/local/gd)目录,编译就不能通过。直接加--with-gd就行(我怀疑是我用yum安装了 gd-devel的缘故)
    
    
    PHP gd FreeType support    off        Fail    --with-freetype-dir=DIR GD: Set the path to FreeType 2 install prefix
    解决方案:编译安装FreeType 
    # wget https://sourceforge.net/projects/freetype/files/freetype2/2.6.5/freetype-2.6.5.tar.gz/download
    # mkdir /usr/local/freetype
    # ./configure --prefix=/usr/local/freetype/
    # make && make install
    
    PHP gettext    off        Warning                --with-gettext=DIR      Include GNU gettext support
    解决方案:
    # wget http://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.tar.gz
    # mkdir /usr/local/gettext
    # ./configure --prefix=/usr/local/gettext

    因此为了支持Zabbix前端,编译安装PHP时需要以下选项:

    --prefix=/usr/local/php 
    --with-mysql=/usr/local/mysql 
    --enable-fastcgi 
    --enable-fpm 
    --with-config-file-path=/usr/local/php/etc 
    -with-zlib=/usr/local/zlib 
    --enable-bcmath  
    --enable-mbstring 
    --enable-sockets 
    --with-gettext=/usr/local/gettext 
    --with-jpeg-dir=/usr/local/jpeg 
    --with-png-dir=/usr/local/libpng 
    --with-freetype-dir=/usr/include/freetype2/freetype 
    --with-gd

    注意:



    文/简单超人(简书作者)
    原文链接:http://www.jianshu.com/p/68016c9006f4
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
  • 相关阅读:
    购物车程序
    python学习第二节 数据类型、字符编码、文件处理
    while实现2-3+4-5+6...+100 的和
    给文件加权限
    查询数据插入新表格
    归档程序错误。在释放之前仅限于内部连接
    查看Linux环境变量
    查找文件命令
    ORACLE导入导出操作篇
    oracle中使用minus进行数据排除(类似SqlServer except函数)
  • 原文地址:https://www.cnblogs.com/moss_tan_jun/p/6140643.html
Copyright © 2011-2022 走看看