<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>果果大叔`s Blog &#187; php</title>
	<atom:link href="http://www.glyle.net/archives/tag/php/feed" rel="self" type="application/rss+xml" />
	<link>http://www.glyle.net</link>
	<description>毫无疑问，你穿越了！你在门口的指示牌上发现了一排小字：“欢迎来到果果怪黍黍的领地”</description>
	<lastBuildDate>Sun, 06 Nov 2011 12:12:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Centos下zend Optimizer无法启动的解决方法</title>
		<link>http://www.glyle.net/archives/100</link>
		<comments>http://www.glyle.net/archives/100#comments</comments>
		<pubDate>Thu, 04 Mar 2010 09:49:30 +0000</pubDate>
		<dc:creator>果果</dc:creator>
				<category><![CDATA[For Linux]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://www.glyle.net/?p=100</guid>
		<description><![CDATA[网上搜索一下，基本都是同一篇文章，提供了3种不同情况的解决方法，我试遍了所有方法都不成功，最后重启了centos，搞定了。make一下以备以后使用
1. 对于 php.ini文件路径有问题( 我的在 phpinf... ]]></description>
			<content:encoded><![CDATA[<p>网上搜索一下，基本都是同一篇文章，提供了3种不同情况的解决方法，我试遍了所有方法都不成功，最后重启了centos，搞定了。make一下以备以后使用</p>
<p>1. 对于 php.ini文件路径有问题( 我的在 phpinfo()显示php.ini路径正确，我就不用这个方法 )</p>
<p>解决方法</p>
<p>php -i | grep php.ini 就可以找到当前php使用的php.ini文件</p>
<p>比如, 编译安装时没有指定php.ini存放路径, 那么默认php.ini会放在/usr/local/lib下面</p>
<p>最好是在编译PHP时指定PHP配置文件的路径 如: &#8211;with-config-file-path=/usr/local/etc</p>
<p>而一般zend默认安装 php.ini在/etc/目录下面或/usr/local/Zend/etc 所以需要在安装的时候手工指定我们php.ini文件存放的位置</p>
<p>如果, 不知道现在的PHP 的配置文件具体位置的话 可以查看一下:</p>
<p>php -i | grep php.ini</p>
<p>如果php optimizer安装好了 却发现不能加载的话可以 手工指定读取php.ini文件的位置</p>
<p>php -c /etc/ -v 如果可以看到zend opt正确加载</p>
<p>那么做个连接就好了 连接到php默认读取的php.ini路径下面</p>
<p>比如</p>
<p>ln -sf /etc/php.ini /usr/local/lib</p>
<p>[root@localhost /]# php -v</p>
<p>PHP 5.2.5 (cli) (built: Jan 22 2006 12:59:19)</p>
<p>Copyright (c) 1997-2006 The PHP Group</p>
<p>Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies</p>
<p>with Zend Extension Manager v1.0.9, Copyright (c) 2003-2006, by Zend Technologies</p>
<p>with Zend Optimizer v3.3.2, Copyright (c) 1998-2006, by Zend Technologies</p>
<p>Ok 正常了 phpinfo()看到的当然也是一样的</p>
<p>2. 调用库文件的问题</p>
<p>有的时候还有一些情况下 php -i 或php -v 在控制台下可以看到zend opt,</p>
<p>但是 apache 执行phpinfo的输出里面却看不到</p>
<p>一般是因为 调用php的时候zend模块不能加载, 比如AS4里面 就是这样的</p>
<p>如as4下面默认的php安装后读取库文件的路径 是在/usr/lib下面 ，</p>
<p>而php.ini文件中加载zend模块是在zend安装路径的lib目录中</p>
<p>比如/usr/local/Zend/lib 这时apache在执行php时 不能加载zend模块 所以 在控制台里php -v 可以正常</p>
<p>但是apache 却没有加载zend。</p>
<p>解决办法</p>
<p>先把zend模块copy到</p>
<p>/usr/lib里面 然后改一下php.ini里面zend加载模块部分</p>
<p>( 我在 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</p>
<p>看了这个原来是权限问题)</p>
<p>3. 最恶心的SElinux问题</p>
<p>SElinux导致PHP不能使用zend/lib下的库文件。所以，即便是做了link也不行。只能够拷贝库文件到有权限的目录。或者直接关掉SElinux</p>
<p>但我已 在 /etc/selinux/config 的 SELINUX=disabled 关掉SElinux 还是不行, 再网络查询发现</p>
<p>在你保证SElinux 被disable后.还执行下</p>
<p>chcon -t texrel_shlib_t 命令</p>
<p>如: chcon -t texrel_shlib_t /usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so (这个文件视具体执行文件.)</p>
<p>就可以了。</p>
<p>我的解决的情况是:</p>
<p>1. 关闭SElinux</p>
<p>2. 运行 #chcon -t texrel_shlib_t /usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so</p>
<p>就可以了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.glyle.net/archives/100/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

