在基于Jetty Fast CGI Proxy和php-fpm下配置Discuz

终于把Discuz装上了,但是安装完以后发现问题一大堆。。这个图片不显示,那个不能用的。

问题的根源在于因为我不是直接的php访问,而是通过php-fpm中转了一下,而discuz的代码里面很多直接引用了$_SERVER[HTTP_HOST]这样的变量,使得很多地方都是localhost:9000 (即代理的地址)

要解决这个问题要花好几步

1. upload/source/class/discuz_application下面,搜索siteurl,在初始化siteurl的地方,填写你的域名

2. 参照http://blackbap.org/thread-4847-1-1.html

到source\module\misc\misc_seccode.php,查找第94行

改成

if($$_G['setting']['seccodedata']['type'] < 2 && ($$refererhost['host'] != ($$_SERVER['HTTP_X_FORWARDED_HOST'] ? 
$$_SERVER['HTTP_X_FORWARDED_HOST'] : $$_SERVER['HTTP_HOST'])) || $$_G['setting']['seccodedata']['type'] == 2 && !extension_loaded('ming') && $$_POST['fromFlash'] != 1 || $$_G['setting']['seccodedata']['type'] == 3 && $$_GET['fromFlash'] != 
1) {

3.

到/source/class/helper/helper_form.php,查找submitcheck

改成

public static function submitcheck($var, $allowget = 0, $seccodecheck = 0, $secqaacheck = 0) {
		if(!getgpc($var)) {
			return FALSE;
		} else {
			global $_G;
			if($allowget || ($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_GET['formhash']) && $_GET['formhash'] == formhash() && empty($_SERVER['HTTP_X_FLASH_VERSION']) && (empty($_SERVER['HTTP_REFERER']) ||
				strncmp($_SERVER['HTTP_REFERER'], 'http://wsq.discuz.qq.com', 24) === 0 || strncmp($_SERVER['HTTP_REFERER'], 'http://m.wsq.qq.com', 19) === 0 ||
				preg_replace("/https?:\/\/([^\:\/]+).*/i", "\\1", $_SERVER['HTTP_REFERER']) == preg_replace("/([^\:]+).*/", "\\1", $_SERVER['HTTP_X_FORWARDED_HOST'])))) {
				if(checkperm('seccode')) {
					if($secqaacheck && !check_secqaa($_GET['secanswer'], $_GET['secqaahash'])) {
						showmessage('submit_secqaa_invalid');
					}
					if($seccodecheck && !check_seccode($_GET['seccodeverify'], $_GET['seccodehash'], 0, $_GET['seccodemodid'])) {
						showmessage('submit_seccode_invalid');
					}
				}
				return TRUE;
			} else {
				showmessage('submit_invalid');
			}
		}
	}

4. 

到upload/uc_server 下面,找到avatar.php,index.php,admin.php下面

查找UC_API,把之后的地址改成你要的域名,注意不要在最后加"/".

5.

登录

..../admin.php

.../uc_server/admin.php

把所有显示localhost的地方改成你的正确域名

这五步做完以后论坛基本能正常显示,如果有什么问题会在这里继续编辑。

posted on 2015-03-16 05:58  littlejedi  阅读(362)  评论(0编辑  收藏  举报

导航