首页 > Operation System > ucenter1.5的一个bug

ucenter1.5的一个bug

2010年3月20日 发表评论 阅读评论

康盛(comsenz)的产品ucenter在其产品线中是个比较重要的产品
最新的supesite和discuz都需要安装ucenter
最新的版本是1.5
在一次挪ucenter的安装目录的过程中
发现有些问题
比如当我把目录由/uc_server(这个一般是缺省的)挪到/Uc_server后
访问这个ucenter的url的时候
还是会跳到/uc_server/下的文件去
而这个目录已经被挪走,自然会出404错误
其实正确的应该是跳往/Uc_server/下的文件
看了看代码
发现问题出在一个常量UC_API的定义上
这里牵涉到几个文件的几句话

[@65.6 UC]# grep -r “define(‘UC_API'” *
admin.php:define(‘UC_API’, strtolower((isset($_SERVER[‘HTTPS’]) && $_SERVER[‘HTTPS’] == ‘on’ ? ‘https’ : ‘http’).’://’.$_SERVER[‘HTTP_HOST’].substr($_SERVER[‘PHP_SELF’], 0, strrpos($_SERVER[‘PHP_SELF’], ‘/’))));
avatar.php:define(‘UC_API’, strtolower(($_SERVER[‘HTTPS’] == ‘on’ ? ‘https’ : ‘http’).’://’.$_SERVER[‘HTTP_HOST’].substr($_SERVER[‘PHP_SELF’], 0, strrpos($_SERVER[‘PHP_SELF’], ‘/’))));
index.php:define(‘UC_API’, strtolower(($_SERVER[‘HTTPS’] == ‘on’ ? ‘https’ : ‘http’).’://’.$_SERVER[‘HTTP_HOST’].substr($_SERVER[‘PHP_SELF’], 0, strrpos($_SERVER[‘PHP_SELF’], ‘/’))));

其实就是admin.php、avatar.php和index.php三个文件里的三句话
这三个语句都是一个问题:
就是把url路径里的字符串用strtolower给变成小写了,然后再定义给UC_API
这样在windows下或ucenter用单独域名,装在/下自然没有问题
但是当服务器是Linux,且ucenter装在的目录有大写字符时
就有问题了
问题找到了
解决起来也容易
就是挪动一个“)”号即可
把语句最后挪一个“)”到
$_SERVER[‘HTTP_HOST’]后面就行了
变成像这样

admin.php:define(‘UC_API’, strtolower((isset($_SERVER[‘HTTPS’]) && $_SERVER[‘HTTPS’] == ‘on’ ? ‘https’ : ‘http’).’://’.$_SERVER[‘HTTP_HOST’]).substr($_SERVER[‘PHP_SELF’], 0, strrpos($_SERVER[‘PHP_SELF’], ‘/’)));
avatar.php:define(‘UC_API’, strtolower(($_SERVER[‘HTTPS’] == ‘on’ ? ‘https’ : ‘http’).’://’.$_SERVER[‘HTTP_HOST’]).substr($_SERVER[‘PHP_SELF’], 0, strrpos($_SERVER[‘PHP_SELF’], ‘/’)));
index.php:define(‘UC_API’, strtolower(($_SERVER[‘HTTPS’] == ‘on’ ? ‘https’ : ‘http’).’://’.$_SERVER[‘HTTP_HOST’]).substr($_SERVER[‘PHP_SELF’], 0, strrpos($_SERVER[‘PHP_SELF’], ‘/’)));

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.