0%

WordPress中uploads目录替换为SAE的Storage方法

一, 在Storage中建好一个叫wordpress的domain 在SAE上创建应用,安装WordPress for SAE版本的时候会提示要先在Storage中建个wordpress的domain。

二, 在应用的根目录,创建sae.php文件
1).先用svn的工具TortoiseSVN把应用的代码全部checkout到本地。
2).在应用的根目录,创建sae.php文件
代码如下:

1
2
3
4
5
6
7
<?php
/* 在SAE的Storage中新建的Domain名,比如“wordpress”*/
define('SAE_STORAGE',wordpress);
/* 设置文件上传的路径和文件路径的URL,不要更改 */
define('SAE_DIR', 'saestor://'.SAE_STORAGE.'/uploads');
define('SAE_URL', 'http://'.$_SERVER['HTTP_APPNAME'].'-'.SAE_STORAGE.'.stor.sinaapp.com/uploads');
?>

三, 修改wp-includes/functions.php文件
1).

1
require( ABSPATH . WPINC . '/option.php' );

前添加一行:

1
include( ABSPATH . '/sae.php' ); //调用SAE的Storage文件域名设置 //for SAE

2).注释掉如下代码,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/*** Step 1: include sae.php ***/
include( ABSPATH . '/sae.php' ); //添加这一行。调用SAE的Storage文件域名设置
require( ABSPATH . WPINC . '/option.php' );
前添加

/*** Step 2: 替换代码 ***/
/*
$wrapper = null;

// Strip the protocol.
if (wp_is_stream ( $target )) {
list ( $wrapper, $target ) = explode ( '://', $target, 2 );
}

// From php.net/mkdir user contributed notes.
$target = str_replace ( '//', '/', $target );

// Put the wrapper back on the target.
if ($wrapper !== null) {
$target = $wrapper . '://' . $target;
}
*/

//替换为以下代码
// from php.net/mkdir user contributed notes
if (substr ( $target, 0, 10 ) == 'saestor://') {
return true;
}
$target = str_replace ( '//', '/', $target );

/*** Step 3: 添加代码 ***/
$dir = SAE_DIR; //添加这一行
$url = SAE_URL; //添加这一行
$basedir = $dir;

/*** Step 4: 添加代码 ***/
//添加如下代码块
if ( !function_exists('utf8_encode') ) {
function utf8_encode($str) {
$encoding_in = mb_detect_encoding($str);
return mb_convert_encoding($str, 'UTF-8', $encoding_in);
}
}

//在这前面添加上述代码
/**
* Send a HTTP header to limit rendering of pages to same origin iframes.
*
* @since 3.1.3
*
* @see https://developer.mozilla.org/en/the_x-frame-options_response_header
*/

四, 修改wp-admin/includes/file.php

1
2
3
4
5
/*** 注释如下代码 ***/
// Set correct file permissions.
$stat = stat ( dirname ( $new_file ) );
$perms = $stat ['mode'] & 0000666;
@ chmod ( $new_file, $perms );