Windows 8.1 + IIS 8.5 + PHP 5.6.3配置

首先,想从源代码编译PHP的话,去php.net下载。想省事的话,去windows.php.net/download下载编译好的包。由于是用较新的FastCGI搭载PHP,只需要下载非线程安全的包即可。理由如下:

本段转自:http://astar.baidu.com/forum/forum.php?mod=viewthread&tid=366
Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全)之分,这两者不同在于何处?到底应该用哪种?这里做一个简单的介绍。从2000年10月20日发布的第一个Windows版的PHP3.0.17开始的都是线程安全的版本,这是由于与Linux/Unix系统是采用多进程的工作方式不同的是Windows系统是采用多线程的工作方式。如果在IIS下以CGI方式运行PHP会非常慢,这是由于CGI模式是建立在多进程的基础之上的,而非多线程。一般我们会把PHP配置成以ISAPI的方式来运行,ISAPI是多线程的方式,这样就快多了。但存在一个问题,很多常用的PHP扩展是以Linux/Unix的多进程思想来开发的,这些扩展在ISAPI的方式运行时就会出错搞垮IIS。因此在IIS下CGI模式才是 PHP运行的最安全方式,但CGI模式对于每个HTTP请求都需要重新加载和卸载整个PHP环境,其消耗是巨大的。为了兼顾IIS下PHP的效率和安全,微软给出了FastCGI的解决方案。FastCGI可以让PHP的进程重复利用而不是每一个新的请求就重开一个进程。同时FastCGI也可以允许几个进程同时执行。这样既解决了CGI进程模式消耗太大的问题,又利用上了CGI进程模式不存在线程安全问题的优势。因此,如果是使用ISAPI的方式来运行PHP就必须用Thread Safe(线程安全)的版本;而用FastCGI模式运行PHP的话就没有必要用线程安全检查了,用None Thread Safe(NTS,非线程安全)的版本能够更好的提高效率。

下载解压到D:\php完毕后,开始配置PHP。

1、进入Control Panel\All Control Panel Items\Programs and Features,找到Internet Information Services > World Wide Web Services > Application Development Features,选中CGI这一项。

2、进入控制面板>管理工具>Internet信息服务(IIS)管理器,新建一个站点。在站点节点下,双击“处理程序映射” (Handler Mappings),单击右边“添加模块映射”(Add Module Mapping)。在弹出窗口依次填入下值并确定添加:
*.php
FastCgiModule
D:\php\php-cgi.exe
PHP

3、复制D:\php\php.ini-development为php.ini,做如下编辑后复制到C:\Windows目录下。
date.timezone = “Asia/Shanghai” (或Australia/Brisbane)
extension_dir = “D:\php\ext\”
以下模块去除引用标记:
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll

4、浏览器测试。创建一个ANSI格式的文本(Unicode不行)。内容为<?php phpinfo();?>。改后缀名为.php,复制到wwwroot目录下的某个站点。然后在浏览器里运行测试。如未显示PHP配置信息,说明配置有误。如显示500错误,需要安装VC Runtime。PHP 5.6.x需要VC2012的运行包!

5、DOS测试。以命令行方式运行php.exe .php,可以达到相同效果。
extension=php_pdo_mysql.dll

Advertisements

WordPress之Atahualpa风格自动摘要中文字数问题修正

Atahualpa是WordPress最强的风格之一,它的自动摘要功能很实用。自动摘要可以自动抽取日志的前N字显示为摘要。在后台,可以在Atahualpa的选项中设定自动摘要的字数限制。然而该限制只是针对英文单词的。如果日志中包含大量的中文字符,可能会导致字数限制无效,例如,超过字数限制显示,以全文代替摘要显示,甚至无摘要显示(只显示…)。

在网上找到修正的方法,参考Atahualpa的源代码,略作调整如下:

在wp-contentthemesatahualpa的目录下编辑functions.php

在“// Custom Excerpts”一行后加入以下代码:

/**
 * author 冰古
 * link http://wanwp.com
 * cut_str用于截断包含中文(或其他多字节?)的utf8编码的字符串
 * @param string $str utf8编码的字符串
 * @param int $len 需要截取的长度(单位是字节)
 */
function cut_str($str, $len) {
    if (!isset($str[$len])) {
        // 判断字符串长度是否已经达到需要截取的长度
        // 未达到时,直接输出原字符串
    } else {
        if (seems_utf8($str[$len-1])) // 判断截断字符串的最后一个字符是否是utf8编码的
            $str = substr($str, 0, $len); // 如果是utf8编码的,直接截断输出
        else { // 如果不是utf8编码的,因为utf8编码的中文是三个字节进行保存的,则判断该字符和周围字符组成的字符串是否符合utf8编码
            if(seems_utf8($str[$len-3].$str[$len-2].$str[$len-1]))
                $str = substr($str, 0, $len-3) . $str[$len-3] . $str[$len-2] . $str[$len-1];
            elseif(seems_utf8($str[$len-2].$str[$len-1].$str[$len]))
                $str = substr($str, 0, $len-2) . $str[$len-2].$str[$len-1].$str[$len];
            elseif(seems_utf8($str[$len-1].$str[$len].$str[$len+1]))
                $str = substr($str, 0, $len-1) . $str[$len-1].$str[$len].$str[$len+1];
            else // 这个else应该不用也是可以的
                $str = substr($str, 0, $len);
        }
    }
    return $str;
}

用以下代码替换原代码

// Custom Excerpts
function bfa_wp_trim_excerpt($text) { // Fakes an excerpt if needed
// Replaced by U @ lu.phpnet.us, 20100809
    global $bfa_ata;
    $custom_read_more = str_replace('%permalink%', get_permalink(), $bfa_ata['custom_read_more']);
    $custom_read_more = str_replace('%title%', the_title('','',FALSE), $custom_read_more);
    $text = strip_tags(get_the_content(''));
    $text = cut_str($text, $bfa_ata['excerpt_length']);
    $text = $text . $custom_read_more;
    return $text;
}

参考文章:http://wanwp.com/tips-tricks/automatic-excerpt-for-wordpress/

禁用WordPress日志历史和自动保存

WordPress 2.6 后的特性“日志历史”(post revision features)和自动保存功能实在是加重了数据库的冗余,不得不将其禁用。在网上找到如下方法。

文章来源:http://www.techmixer.com/disable-and-remove-wordpress-revision-post-features/

清除数据库中已有的日志历史:
DELETE FROM wp_posts WHERE post_type = “revision”;

禁用日志历史:
修改wp-config.php
添加一行define(’WP_POST_REVISIONS’, false);

文章来源:http://www.williamlong.info/archives/1175.html

禁用自动保存:
修改wp-adminpage.php
修改wp-adminpage-new.php
修改wp-adminpost.php
修改wp-adminpost-new.php
注释掉wp_enqueue_script(‘autosave’)