存档

‘For Linux’ 分类的存档

Centos下zend Optimizer无法启动的解决方法

2010年3月4日 果果 没有评论

网上搜索一下,基本都是同一篇文章,提供了3种不同情况的解决方法,我试遍了所有方法都不成功,最后重启了centos,搞定了。make一下以备以后使用

1. 对于 php.ini文件路径有问题( 我的在 phpinfo()显示php.ini路径正确,我就不用这个方法 )

解决方法

php -i | grep php.ini 就可以找到当前php使用的php.ini文件

比如, 编译安装时没有指定php.ini存放路径, 那么默认php.ini会放在/usr/local/lib下面

最好是在编译PHP时指定PHP配置文件的路径 如: –with-config-file-path=/usr/local/etc

而一般zend默认安装 php.ini在/etc/目录下面或/usr/local/Zend/etc 所以需要在安装的时候手工指定我们php.ini文件存放的位置

如果, 不知道现在的PHP 的配置文件具体位置的话 可以查看一下:

php -i | grep php.ini

如果php optimizer安装好了 却发现不能加载的话可以 手工指定读取php.ini文件的位置

php -c /etc/ -v 如果可以看到zend opt正确加载

那么做个连接就好了 连接到php默认读取的php.ini路径下面

比如

ln -sf /etc/php.ini /usr/local/lib

[root@localhost /]# php -v

PHP 5.2.5 (cli) (built: Jan 22 2006 12:59:19)

Copyright (c) 1997-2006 The PHP Group

Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies

with Zend Extension Manager v1.0.9, Copyright (c) 2003-2006, by Zend Technologies

with Zend Optimizer v3.3.2, Copyright (c) 1998-2006, by Zend Technologies

Ok 正常了 phpinfo()看到的当然也是一样的

2. 调用库文件的问题

有的时候还有一些情况下 php -i 或php -v 在控制台下可以看到zend opt,

但是 apache 执行phpinfo的输出里面却看不到

一般是因为 调用php的时候zend模块不能加载, 比如AS4里面 就是这样的

如as4下面默认的php安装后读取库文件的路径 是在/usr/lib下面 ,

而php.ini文件中加载zend模块是在zend安装路径的lib目录中

比如/usr/local/Zend/lib 这时apache在执行php时 不能加载zend模块 所以 在控制台里php -v 可以正常

但是apache 却没有加载zend。

解决办法

先把zend模块copy到

/usr/lib里面 然后改一下php.ini里面zend加载模块部分

( 我在 php -i 中显示 Failed loading /usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so: /usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so: cannot restore segment prot after reloc: Permission denied

看了这个原来是权限问题)

3. 最恶心的SElinux问题

SElinux导致PHP不能使用zend/lib下的库文件。所以,即便是做了link也不行。只能够拷贝库文件到有权限的目录。或者直接关掉SElinux

但我已 在 /etc/selinux/config 的 SELINUX=disabled 关掉SElinux 还是不行, 再网络查询发现

在你保证SElinux 被disable后.还执行下

chcon -t texrel_shlib_t 命令

如: chcon -t texrel_shlib_t /usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so (这个文件视具体执行文件.)

就可以了。

我的解决的情况是:

1. 关闭SElinux

2. 运行 #chcon -t texrel_shlib_t /usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so

就可以了。

分类: For Linux 标签: , ,

逼不得已学了很多新东西~关于apache(阿帕奇)优化

2009年9月6日 果果 3 条评论

关心我的朋友会发现,昨天晚上我的博客突然打不开了(好吧,就一个人看我的博客,昨天晚上还在忙着跟我吵架)
网站也是如此,吃完饭回来闻此噩耗,顿悟:这个周末又要泡汤!
信箱来了几十封鸟文信,大致是说链接数过多,请求超时!
妈的,我哪知道哪个黄毛绿眼睛的外国鸟人这么爱访问我们的网站
某个没有自知之明的人还在一边热心的出他那向来没什么参考价值的主意
没办法,我不入地狱谁入地狱,埋头苦搞吧~

咨询下主机商技术,奶奶的用鸟文直接告诉我需要优化apache配置,这些超出了他们服务的范畴
我要是会弄还找你们干嘛,你们丫的一个月收几百美金,原来是一群吃闲饭的
好在人把道给咱指了,就自己摸索吧(期间某人又献计献策无数,被我华丽的无视)

找了几篇讲Apache优化的,加上那边技术给我提供的几篇鸟文文章,大概搞明白了要调整哪些参数
这是美国鸟人网站上推荐的配置,就先照这个修改吧

MaxClients: 256 //最大客户连接数,这个貌似最大就256了,安装时候可以修改,安装完不知道还能改不
StatServers: 5 //服务器启动时建立的子进程数量,别问我,我也不懂
MinSpareServers 32 // 空闲子进程的最小数量
MaxSpareServers 64 //同上的最大数量,同样不解,在想调小一点会不会更好,能及时杀死多余的进程
MaxRequestsPerChild: 0 //让我纠结了半晚上的东西,内存不够大的还是写个数吧,0表示不限制

但问题是,linux下修改个文档可不像windows打开记事本那么方便
于是搜索“linux 文档编辑”,得知vi这个神级编辑器,找了篇帖子稍微学习下
别说咱哥是天才,不就是用命令行编辑嘛,没吃过猪肉还没见过猪跑,
就跟DOS下的一模一样,(此时顺便向某人演示一下我是多么的高端)
总结一下今天要用到的命令:
more firename //查看某文档内容,看过再编辑,编辑完了也再看一下
vi firename //打开某文件
:s /**/## //vi编辑命令,把光标所在行的星星替换成井井,还有很多编辑功能,这一个够我用了
:wq //vi编辑命令,保存并退出
四条命令,轻松完成编辑,保存,重启apache服务

貌似网站恢复正常了,但没一会又挂了,我擦!
继续研究这几个参数,突然想到Email里面告知我是连接数过多
于是聚焦在MaxRequestsPerChild参数上
之前是0,表示无限制,整个1000试试看
重启apache后果然有效果,虽然网页还是很慢,但可以打开了
于是一级一级调下来,现在定格在200,感觉不错,也五点多了
我可怜的周末啊

PS,这会测试又有点慢了,不过也算是将就能用,
MaxRequestsPerChild这个参数有点郁闷,调太高了,占用资源太多,
调低了吧,总是生成新的子进程也消耗系统资源,纠结啊!
白天再说吧!拒绝加班!

最终修改为:
MaxClients: 256
StatServers: 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestsPerChild: 200
感觉良好,看来老外写的东西也不一定适合自己,这可能也不是最好的,待优化!
六点多了,我真的不行了,睡!

分类: For Linux 标签: