记一次在LAMP中遇到的问题

平常都是用Java的,工作需要翻看一下php的代码,所以临时拿起LAMP(Linux+Apache+MySQL+PHP)来。在使用LAMP中遇到一些异常情况,首先从一个demo说起:
[11.php代码如下]

<?php 
    date_default_timezone_set('Asia/Shanghai');
    phpinfo();
    $conn = mysql_connect("10.101.139.5", "root", "root") or die (mysql_error());
    mysql_select_db("vdpcenter");
    mysql_query('SET NAMES UTF8');

?>

这里面主要是在mysql_connect()方法运行时发生了如下异常:

[Wed Aug 24 09:09:57 2016] [error][client 10.101.48.252] PHP Fatal error: Call to undefined function mysql_connect() in /var/www/vdp/vdp-web/11.php on line 4.
...
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mysql.so' - libmysqlclient.so 16: Cannot open shared object file: No such file or directory in Unkown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mysqli.so' - libmysqlclient.so 16: Cannot open shared object file: No such file or directory in Unkown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/pdo_mysql.so' - libmysqlclient.so 16: Cannot open shared object file: No such file or directory in Unkown on line 0

看得出是应该是少库了,cd到/usr/lib64/目录下也没有找到php相关的文件夹,所以可以确定着一点。安装php时附带安装了很多的依赖包,至于少了哪个就省得查了,直接重装,无脑又高效。
这里需要查看一下已有安装的php相关的依赖包:

[root@hidden ~]#rpm -qa|grep php

可以看到:
[图片]
这里需要一个一个的删除,比如:

[root@hidden ~]# rpm -e php-mysql-5.5.5-48.el6_8.x86_64

在删除的过程中会遇到删除失败,因为有依赖包的关系,需要先删除其所依赖的包,根据错误提示删除即可,最后删除全部之后,可以通过下面两个命令查看是否删除干净:

[root@hidden ~]#rpm -qa|grep php
或
[root@hidden ~]#php -v

之后开始安装,这里采用的是yum安装的方式(这里采用的是CentOS6的操作系统),如果是RedHat的Linux系统一般是不能采用yum安装的,需要另谋出路啦~

#yum  -y install php

[图片]

#yum search php
#yum -y install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc

这里一般是安装完成了,那么下面要测试一下是否安装成功,同样采用文章开头了那个11.php作为测试页面,将其放到/var/www/html下,之后启动apache服务(httpd): service httpd start。
在浏览器中输入:http://localhost/11.php
是否有以下的画面出现:
[图片]
有则说明php安装成功,革命尚未成功,同志仍需努力。这里还要继续测试其与mysql之间的连通性。
这里通过查看httpd的error日志(在/var/log/httpd/目录下的error_log,可以通过tail -f /var/log/httpd/error_log 实时打印error日志)来查看结果。
发现文章开头的问题没有了,但是又有了新的问题:

[Wed Aug 24 09:55:42 2016] [error] [client 10.101.48.252] PHP Warning:  mysql_connect(): Can't connect to MySQL server on '10.101.139.6' (13) in /var/www/vdp/vdp-web/11.php on line 6
[Wed Aug 24 09:55:42 2016] [error] [client 10.101.48.252] PHP Warning:  mysql_select_db(): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /var/www/vdp/vdp-web/11.php on line 7
[Wed Aug 24 09:55:42 2016] [error] [client 10.101.48.252] PHP Warning:  mysql_select_db(): A link to the server could not be established in /var/www/vdp/vdp-web/11.php on line 7
[Wed Aug 24 09:55:42 2016] [error] [client 10.101.48.252] PHP Warning:  mysql_query(): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /var/www/vdp/vdp-web/11.php on line 8
[Wed Aug 24 09:55:42 2016] [error] [client 10.101.48.252] PHP Warning:  mysql_query(): A link to the server could not be established in /var/www/vdp/vdp-web/11.php on line 8

一步一步来,检查:在/etc/my.cnf中有/tmp/mysql.sock的配置,而且在/etc/php.ini中也配置了mysq.default_socket=/tmp/tmp.sock
解决1: 修改/etc/selinux/config文件

#vim /etc/selinux/config 

将其中的SELINUX=enforcing修改为SELINUX=disabled,重启httpd服务

#service httpd restart

然后浏览11.php,查看到error_log只有一行错误了,如下:

[Wed Aug 24 09:55:42 2016] [error] [client 10.101.48.252] PHP Warning:  mysql_connect(): Can't connect to MySQL server on '10.101.139.6' (13) in /var/www/vdp/vdp-web/11.php on line 6

解决2:输入如下命令:

# setsebool httpd_can_network_connect_db 1
# setsebool -P httpd_can_network_connect 1(这个命令运行需要等待一小段时间)

之后再重启httpd服务,然后浏览测试网页11.php就不报任何错误了,这里就解决了问题了。
应用到真实环境中,可以正常运行。问题解决,over~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值