|
发表于 2012-2-22 13:07:33
|
显示全部楼层
本帖最后由 策策啃鸡腿 于 2012-2-22 13:09 编辑
一:无法解析到正确目录
要求CK编辑器中增加文件上传的功能,其实是非常简单地加载一个CKfinder即可,可是别忘了CI用的路由器如果非$_GET型,你的URL就会使
域名/index.php/控制器/函数/参数 ,你会发现CKfinder很上传文件时,它将会将index.php/控制器/函数/参数 等作为你的目录,这样当然无法找到正确的脚本文件。
注意,如果你的CI开启了$_GET路由,即url形式为 域名/c= 控制器&f= 函数 的话,不必修改,
修改方法:
ckfinder/core/connector/ckfinder_php5.php 文件, 找到SetupCKEditorObject()函数在
if ( isset($url[0]) && $url[0] != ‘/’ ){}内部用
PHP复制代码 //正则去除$_SERVER[ 'REQUEST_URI' ]index.php之后的内容
$real_url = preg_replace("|(.*)/index.php/(.*)|i", "$1/", $_SERVER[ 'REQUEST_URI' ]);
$url = substr( $real_url, 0, strrpos( $real_url, '/' ) + 1 ) . $url ;
复制代码
来替换即可
二:config.php中的上传路径
一般而言,我们的程序都是本地测试后上传到服务器,本地的上传路径是已知的,而服务器可就不一定知道了,而且即使知道,一旦程序的路径有所变动,你的CKfinder还要重新配置,所以,一般而言,我都是用以下代码替代config.php中
$baseUrl那一行。
//var_dump($_SERVER['PHP_SELF']);
$right_ulr = explode('/',$_SERVER['PHP_SELF']);
$len = count($right_ulr);
for($i=0;$i<6;$i++)
unset($right_ulr[count($right_ulr)-1]);
//var_dump($right_ulr);
$baseUrl = implode('/', $right_ulr).'/upload/pic/';
解释下代码
在for语句中$i<6中的6是指
ckfinder/core/connector/php中的connector.php
离网站根目录的目录数量,这个得依据你的ckfinder在网站逻辑根目录的路径决定
循环1:去除connector.php
循环 2:去除php
循环 3:去除connector
循环 4:去除core
循环 5:去除ckfinder
循环 6:去除ckfinder所属的plugins目录(这里看你自己的网站目录咯)
文件夹权限
/upload/pic/是指放在我网站根目录的upload/pic/文件夹下,注意权限777(win7允许完全控制)
这样,你的CI就能畅通无阻的享受ckfinder,而不必担心恼人的路径问题了
|
|