器量大者,福泽必厚
全部博文(587)
分类: LINUX
2015-04-28 14:49:02
##使用场景,不需要给研发开机器的权限,而研发又能操作redis库!
wget --no-check-certificate
tar zxvf phpredis.tar.gz
cd owlient-phpredis-90ecd17/
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config
make
make test
make install
cd /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/
查看是否多出一个redis.so文件!
修改php.ini文件,将该redis.so 给加进去
通过php -m命令来查看是否已经有redis模块,如下:
开始我试着下载,解压后,直接作为一个php的项目来运行,结果发现运行报错:
PHP message: PHP Fatal error: require(): Failed opening required '/data/redisadmin/includes/../vendor/autoload.php' (include_path='.:') in /data/redisadmin/includes/common.inc.php on line 2"
显然缺少文件,于是想着去看文档,文档中的方法如下:
git clone
cd phpRedisAdmin
git clone
然后将该文件夹复制到/var/www/html目录下,然后在includes目录下复制config.sample.inc.php为config.inc.php ,然后修改
$config = array(
'servers' => array(
array(
'name' => '10.10.11.32 server', // Optional name.
'host' => '10.10.11.32', ##需要修改
'port' => 6379, ##需要修改
'filter' => '*',
在此根据后台日志的报错解决了两个问题:
1: PHP Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 71 bytes) in /var/www/html/index.php on line 17
这个修改下php.ini中的内存分配就可以了
2: [Fri Apr 17 15:42:34 2015] [error] [client 222.92.145.181] PHP Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0
[Fri Apr 17 15:42:34 2015] [error] [client 222.92.145.181] PHP Fatal error: Unknown: Failed opening required '/var/www/html/index.php' (include_path='.:/usr/share/pear:/usr/share/php') in Unknown on line 0
这个是selinux的问题,关闭selinux就可以了
3: PHP Fatal error: Call to undefined function mb_internal_encoding() in /var/www/html/includes/common.inc.php on line 59
解决方法:yum -y install php-mbstring 然后重相关服务即可
上面遇到的问题都解决了,接下来更加郁闷的是是后台不报错,web页面一直在那里转,最后在日志里面有输出:
PHP Fatal error: Maximum execution time of 30 seconds exceeded in /var/www/html/index.php on line 17
后来我想到一个测试方法:
[root@localhost liuxiaojie]# cat a.php
$redis = new Redis();
$redis->connect('10.10.11.30',6389);
$redis->set('test','hello world! How are you');
echo $redis->get('test');
?>
结果显示是正常的!
实在想不到解决方法了,很是郁闷,后来无意发现了使用localhost,页面一下就显示出来了,尽管我机器上没有redis,后来哥们给我另外一个redis实例,我在config.inc.php简单修改一下,立刻就显示出来了!
于是猜到是该redis实例的问题,但有陷入了深思,机器的防火墙正常,redis实例通过测试程序能访问,为什么通过却访问失败,后来终于想通了,原来是显示的时候会把data0库里面所有key都给加载出来,该redis实例的keys值太多(大概有几千万),无法一下子加载出来!所以页面就一直在那里转!