移植wordpress+w-e-commerce的网站要注意wp-e-commerce的路径,在移植wordpress时,我们一般会做两件事:
1.导入文件,修改文件夹权限,修改配置文件等等。
2. 将保存好的数据库用记事本打开,搜索原来的域名,假设是在本地,我们会搜索类似"localhost/wordpress"并替换为目标地址域名www.mydomain.com。
如果我们忽略了搜索绝对地址,可能问题就要出现了。对于wp-e-commerce需要获取上传地址,如果地址不存在,就会发生缩略图不显示的情况,并且后台显示报错信息
The following directories are not writable:
输出这条信息的代码在wp-e-commerce/wpsc-admin/display-items.page.php 第114行,这里会检查所有需要可写权限的目录,如果有一个目录不可写(不可写包括权限不足或者目标目录不存在),就会提示错误。
定义目录代码如下(wp-e-commerce/wp-shopping-cart.php 217行)
$wp_upload_dir_data = wp_upload_dir();
$upload_path = $wp_upload_dir_data[‘basedir’];
$wpsc_upload_dir = "{$upload_path}/wpsc/";
$wpsc_image_dir = "{$wpsc_upload_dir}product_images/";
define('WPSC_IMAGE_DIR', $wpsc_image_dir);
最后发现路径是有wp_upload_dir()函数取得
wp_upload_dir()定义在wp-includes/functions.php 中,查看源代码,发现wp_upload_dir的基准路径是由以下代码获得
$upload_path = get_option( 'upload_path' );
也就是说在数据表wp_options中存在一条记录,存贮了upload_path,如果这里的路径填写错误,所有使用wp_upload_dir()函数来获取路径的插件都会发生路径错误。对于wp-e-commerce,将词条记录的value清空或者填上正确的路径都能解决路径错误问题。
这提示我们,移植wordpress时还要做最后一步
在数据库中搜索源地址的绝对路径,并将其替换成对应服务器的绝对地址。