界面数据文件已损坏,无法导入问题的解决

环境:
论坛程序版本 Discuz! 6.1.0 Release 20080606  
APACHE版本 apache 2.0.54
操作系统及 PHP WINNT / PHP v4.4.0 Safe Mode
MySQL 版本 4.0.25-nt

问题:从Dz6.0升级到dz6.1,进后台,不小心删除了默认风格,然后从这里搜索到了默认的DZ6.1风格文件,导入提示:
界面数据文件已损坏,无法导入 无PHP错误信息提示。

郁闷之中,在这里搜索了很多帖子,都说是风格文件的问题,我把自带的其他风格导出再导入,也是提示这个错误,可见风格文件的问题已经排除。那只能考虑PHP环境的问题了,那就找到admin目录下的styles.inc.php,输出导入风格时的文件内容,看是否已经读出文件内容
                $styledata = preg_replace("/(#.*\s+)*/", '', @implode('', file($_FILES['importfile']['tmp_name'])));
                @unlink($_FILES['importfile']['tmp_name']);
                $stylearray = daddslashes(unserialize(base64_decode($styledata)), 1);
                                echo base64_decode($styledata);
                                echo implode('', file($_FILES['importfile']['tmp_name']));
                if(!is_array($stylearray)) {
                        cpmsg('styles_import_data_invalid', '', 'error');
                } elseif(empty($ignoreversion) && strip_tags($stylearray['version']) != strip_tags($version)) {
                        cpmsg('styles_import_version_invalid', '', 'error');
                }
结果发现并没有读到内容。这说明程序并没有得到上传的文件。
接着添加输出内容 将文件提取这句话输出一下,结果系统报错。提示:
open_basedir restriction in effect. File(C:\WINDOWS\TEMP\ ...................
这说明文件的临时目录无访问权限。好了,问题找到了。
在APACHE的httpd.conf中修改读写限制,添加
### PHP 读写限制 ###
php_admin_value open_basedir D:/usr/www;c:/windows/temp

注意:如果你修改过php.ini的session.save_path,请在上述位置open_basedir后添加相应临时目录,分号隔开。
重新启动apache,问题解决!

网站建设咨询