eAccelerator是一個自由開放源碼php加速器,優化和動態內容緩存,提高了php腳本的緩存性能,使得PHP腳本在編譯的狀態下,對服務器的開銷幾乎完全消除,下面我們來看看eAccelerator擴展開啟open_basedir報錯解決辦法.
eAccelerator擴展開啟open_basedir報錯
如果你在使用php加速擴展eAccelerator時發現開啟open_basedir配置項目后程序頁面或者PHP錯誤日志會提示.
open_basedir restriction. in Unknown on line 0
出現這個問題的原因是一般eAccelerator的緩存文件不在你配置的open_basedir目錄之中,而eAccelerator也傻乎乎的遵守了open_basedir的設定.
在網上轉了一圈發現了兩種解決這個問題的辦法:
1.給eAccelerator打補丁
下載本文附件中的補丁文件然后運行下面命令
cd eaccelerator-0.9.6.1
patch eaccelerator.c eaccelerator.c.2.patch
然后照常規步驟編譯即可.
2.編譯時增加參數
在配置eAccelerator的時候增加 “–without-eaccelerator-use-inode” 參數
./configure –without-eaccelerator-use-inode
補充:eAccelerator安裝和配置
首先您要安裝好PHP,然后再來編譯安裝 eaccelerator,過程如下,我們從官方下的版本是 eaccelerator-0.9.5.2.tar.bz2.編譯安裝;
- # tar xvf eaccelerator-0.9.5.2.tar.bz2
- # cd eaccelerator-0.9.5.2
- # export PHP_PREFIX="/usr"
- # $PHP_PREFIX/bin/phpize
- # ./configure
- --enable-eaccelerator=shared
- --with-php-config=$PHP_PREFIX/bin/php-config
- # make
- # make install
注:通過export 來設置php所在的安裝路徑變量,我的PHP是安裝在/usr目錄下,系統用Slackware 12.0,其它系統如果默認安裝也大體差不多,如果不一樣,就自己指定一下.
完成安裝后,eaccelerator.so模塊位于 /usr/lib/php/extensions目錄中,您的系統如果和我不一樣,您自己應該安裝在哪了.
# echo "/usr/lib/php/extensions" > /etc/ld.so.conf
# ldconfig
注:更新動態鏈接庫地址;
修改配置文件;我們首先要修改;php.ini,然后重啟Apache;在php.ini文件中,加入;
zend_extension="/usr/lib/php/extensions/eaccelerator.so" 注:模塊的具體位置;
- eaccelerator.shm_size="16" 注:共享內存大??;
- eaccelerator.cache_dir="/home/eaccelerator" 注:緩存目錄;
- eaccelerator.enable="1"
- eaccelerator.optimizer="1"
- eaccelerator.check_mtime="1"
- eaccelerator.debug="0"
- eaccelerator.filter=""
- eaccelerator.shm_max="0"
- eaccelerator.shm_ttl="0"
- eaccelerator.shm_prune_period="0"
- eaccelerator.shm_only="0"
- eaccelerator.compress="1"
- eaccelerator.compress_level="9"
注:其中,模塊的具體位置必須正確,以您的系統為準,共享內存大小可以自己調整,感覺16M還是可以的,根據服務器的情況,你自己調一下,緩存目錄可以自己指定,我們在這里指定的是 /home目錄上的 eaccelerator 目錄,如果沒有,自己創建一個,權限是0777.
以上的配置是把 eaccelerator 做為 Zend 的擴展模塊來編譯的辦法,如果您的PHP是用安裝模式編譯的,要把 zend_extension改為zend_extension_ts.
如果您是把 eaccelerator 做為 PHP的一個擴展,要用下面的配置.
- extension="eaccelerator.so"
- eaccelerator.shm_size="16"
- eaccelerator.cache_dir="/home/eaccelerator"
- eaccelerator.enable="1"
- eaccelerator.optimizer="1"
- eaccelerator.check_mtime="1"
是不是生效了,您要查看 /home/eaccelerator 目錄中,當Apache服務器啟動了,你隨便點幾個頁面,如果在這個目錄中,出現文件了,那就是生效了,如果沒任何文件,就要找原因了 ……
這兩個配置文件,是不是管用,要你自己根據情況來修改.
# mkdir /home/eaccelerator
# chmod 777 /home/eaccelerator
注:創建緩存目錄池,權限是777
較為安全的應該是0644,原文:A safer and cleaner way would be to change the owner of the directory to the same user PHP runs as (most of the time the same user as Apache or Lighttpd) and set 0644 permissions.)
新聞熱點
疑難解答