您的位置:博客首页 >> Web服务器 >> eAccelerator和open_basedir导致的include报错问题

eAccelerator和open_basedir导致的include报错问题

日志编号:146 发表时间: 2013-03-11 17:50:13 关注次数:2848
问题描述:
以下为引用内容:
服务器的php.ini上设定了open_basedir。
在include_once(或require_once)包含文件时没问题,但用include(或require)包含时会显示Warning,比如:
<?php
include(a.php');
?>
会提示:Warning: include(): open_basedir restriction in effect. File() is not within the allowed path(s)


解决方法:
一、open_basedir增加cache目录。这个是我猜想未实践过。当然,从安全角度看这是下策。
二、编译eAccelerator时加入--without-eaccelerator-use-inode
三、打补丁。将eaccelerator.c文件的第867行修改为 if (php_check_open_basedir(p->realfilename TSRMLS_CC)) {保存后编译安装。或者将本文附件补丁中的eaccelerator.c.2.patch上传到eAccelerator目录,再使用命令patch eaccelerator.c eaccelerator.c.2.patch打进补丁后重新编译。

附件补丁:eaccelerator.c.2.patch(下载后解压上传)

注:随着php版本的升级又升级,eAccelerator也就不再被php之后的版本适用了。
本站不提供讨论功能。
本站所有非新闻类文章均为原创,且禁止转载。
本站为了获得更多流量赚取广告费,难免会有以次充好的文章,望见谅,勿鄙视。