首页 > 编程技术 > php

解决PHP中eAccelerator扩展开启open_basedir报错

发布时间:2016-11-25 15:28

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.)

PHP安装ORACLE扩展的方法比较复杂了,下文本文章就为各位介绍PHP安装ORACLE扩展(oic8安装教程),如果有需要了解ORACLE扩展安装方法的话我们就一起和小编来看看。

本文主要叙述,php环境与oracle数据库不在同一台服务器上时,php环境的安装编译

按照官方说明文档 http://cn2.php.net/manual/zh/oci8.installation.php
编译php的时候要加上这个参数–with-oci8,但是加这个参数有个前提,就是必须要安装了对应的库文件。

安装库文件有两种方法:

一. 你的php环境和oracle在同一台服务器上(通常oracle都很大,这方法不合适)
二. 在你的php服务器上安装 Oracle Instant Client libraries.(这个方法适合php与oracle不在一个服务器上)

Oracle Instant Client libraries的安装步骤:详见 这里
1. 针对自己的系统下载适合的Instant Client packages安装包。其中安装包都需要Basic或者Basic Lite包(根据本链接选择一个系统平台,然后进去下载对应的Basic或者SDK等等包)

这里我下载了三个zip的包,分别是:

 代码如下 复制代码
Instant Client Package – Basic
Instant Client Package – SQL*Plus
Instant Client Package – SDK

2. 解压包到一个单独的目录,比如 “instantclient”.(我把上述三个包放到一起,然后放到了/usr/local/instantclient)

3. 在环境变量里设置库的加载路径,路径为第二部设置的路径”instantclient”。多数UNIX平台环境变量设置LD_LIBRARY_PATH,而Windows系统应该用PATH

4. 可以开始你的应用了

加载库(上述第3步骤,环境变量)
上述所述的库,需要加载到linux系统才可以,那怎么加载呢
方法一:
编辑 /etc/ld.so.conf,在里面加入一行库文件路径/usr/local/instantclient(根据实际情况而定)
注意:centos的/etc/ld.so.conf文件里是用include包含加载了/etc/ld.so.conf.d/*.conf所有文件,所以我们可以创建一个文件/etc/ld.so.conf.d/oracle.conf,在里面加入一行库文件路径/usr/local/instantclient(根据实际情况而定),而不是直接编辑/etc/ld.so.conf文件。

方法二:

设置Linux系统设置环境变量

 

 代码如下 复制代码
vim ~/.bashrc

最后一行加入

 代码如下 复制代码


export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/instantclient

此处根据实际情况修改,因为上述第二步的instantclient位置放到了/usr/local/instantclient

编译PHP
如果是编译安装php则需要加上 –with-oci8参数,因为我把Instant Client packages放在了/usr/local/instantclient
所以–with-oci8参数可以这样写

 代码如下 复制代码

–with-oci8=shared,instantclient,/usr/local/instantclient

php实例编译如下:

 代码如下 复制代码

./configure --prefix=/usr/local/php-5.3 --with-config-file-path=/usr/local/php-5.3/etc --with-config-file-scan-dir=/usr/local/php-5.3/etc/php.d --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-iconv --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --with-openssl --enable-soap --enable-safe-mode --enable-zip --with-oci8=shared,instantclient,/usr/local/instantclient

php官方实例,这样写的./configure –with-oci8=shared,instantclient,/usr/lib/oracle//client/lib
编译时如提示找不到libclntsh.so,可以加个软链

 代码如下 复制代码

ln -s /usr/local/instantclient/libclntsh.so.12.1 /usr/local/instantclient/libclntsh.so

安装oci8拓展

使用php的pecl安装拓展

 代码如下 复制代码
./pecl install oci8

在提示输入,Instant Client packages库的路径时候录入实际路径,此处录入:

 代码如下 复制代码

shared,instantclient,/usr/local/instantclient
 

[root@localhost bin]# ./pecl install oci8
downloading oci8-2.0.8.tgz ...
Starting to download oci8-2.0.8.tgz (190,854 bytes)
.........................................done: 190,854 bytes
11 source files, building
WARNING: php_bin /usr/local/php-5.3/bin/php appears to have a suffix -5.3/bin/php, but config variable php_suffix does not match
running: phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client [autodetect] : shared,instantclient,/usr/local/instantclient

最后把oci8加入php.ini

 代码如下 复制代码

extension=oci8.so

查看phpinfo

PHP安装ORACLE扩展(oic8安装教程)

下面小编找了一篇关于PhpStorm中使用 PHP_CodeSniffer的图文教程,希望此文章能帮助到各位朋友哦。
1. 点击菜单:File->Settings 或 按快捷键 Ctrl+Alt+S
2. 选择Project Settings下的:PHP->Code Sniffer
3. 设置PHP Code Sniffer(phpcs) path为:E:wampbinpearphpcs.bat

4. 点击Validate按钮,可以看到如下提示,说明设置OK

5. 选择Project Settings下的Inspections,展开PHP,勾选PHP Code Sniffer validation
php_code_shiffer_validation
6. 第一次打开的时候,需要点击一下刷新的按钮可以获取已安装的代码规范,如果无法获取到代码规范的话,先执行 phpcs -i 命令查看PHP_CodeSniffer中已经安装的编码风格,确定有之后,尝试重启一下PhpStorm在刷新看看
php_code_sniffer_validation_coding_standard
7. 选择一个你习惯的编码风格,然后Apply配置
coding_standard_area
8. 打开一个PHP文件,就可以看到不符合规则的提示
phpcs_show

 

linux下的php扩展与windows下的扩展安装有些不同。下面就拿在linux下扩展php的pdo,pdo_mysql模块来说明一下

linux下的php扩展与windows下的扩展安装有些不同。下面就拿在linux下扩展php的pdo,pdo_mysql模块来说明一下

1.在php的原码安装包里,进入到etc/pdo_mysql里。假设你的php是安装在/usr/local/php里的。执行/usr/local/php/bin/phpize

2. 进行编译。./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql (假设你的mysql是安装在/usr/local/mysql)

3.编译安装。make,make install。

4.到了第3步的时候。在/usr/local/php/lib/php/extensions里就会多了个no-debug-non-zts-20050922文件夹,它里面就生成了一个pdo_mysql.so

5.修改php.ini,加入扩展语句extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/pdo_mysql.so"

6.重启apache。OK扩展完成

7.安装pdo的方法与pdo_mysql的方法一样.但是要注意在这个安装过程中如果系统没有aclocal命令,那么请先安装这个命令,这个命令在autoconf包里。

Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况了,下面我们来看php5中Xdebug配置安装,希望能帮助到各位。

Xdebug版本下载

http://www.xdebug.com/download.php

注意在下载Xdebug时我们必须查看自己php版本之后与xdebug一样,并且要查看你的php是线程安全或非线程序安全的,否则可以没有用哦。


下载好 php_xdebug.dll 之后我们复制到你的php ext目录,如

D:/phpStudy/PHP5/ext/php_xdebug.dll

这个是我本地的,放好之后再把php.ini文件进行修改,加入下面代码

 代码如下 复制代码

[Xdebug]
zend_extension="D:/phpStudy/PHP5/ext/php_xdebug.dll"
xdebug.collect_return=1
xdebug.show_mem_delta=1
xdebug.show_exception_trace=1
xdebug.idekey="PHPStorm"
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.auto_trace=0  错误跟踪提示0关闭,1打开
xdebug.trace_output_name=%s.trace.log
xdebug.trace_output_dir="E:/XDebug/Trace"
xdebug.profiler_enable=0
xdebug.profiler_output_name=%s.profiler.log
xdebug.profiler_output_dir="E:/XDebug/Profiler"

好了最后一步重启apache就可以解决了哦,然后我们来检查一下Xdebug配置安装是否成功了,我们在一个php测试一下phpinfo()

php5中Xdebug配置安装步骤介绍

如果在截图处可看到with Xdebug v2.2.5, Copyright (c) 2002-2014, by Derick Rethans
就代码成功了

现在我们测试一段代码

php5中Xdebug配置安装步骤介绍

是不是非常详细的告诉我们错误信息了呀。

标签:[!--infotagslink--]

您可能感兴趣的文章: