Apache 反向代理错误一则

 - by Mr.Lodar

在 Windows 上使用 Apache 搭建了一个 PHP 环境,由于要和一些原先在使用的网站使用同一域名,便搭建了一个反向代理,将相应路径反向代理到原来的网站所在的服务器,根目录则使用当前服务器,运行了一段时间,网站管理人员报告称反向代理的那些网站不能访问了,访问相应的地址时显示如下错误:

Service Temporarily Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

查看Apache的logs/error.log日志文件,有显示如下内容:

[Thu Jul 01 12:03:45 2010] [error] (OS 10061)由于目标机器积极拒绝,无法连接。 : proxy: HTTP: attempt to connect to 192.168.0.10:8080 (192.168.0.10) failed
[Thu Jul 01 12:03:45 2010] [error] ap_proxy_connect_backend disabling worker for (192.168.0.10)

一开始感觉就是连接被防火墙阻止了,但网站管理人员称防火墙已关闭,并且使用使用IE访问反向代理的那个地址能正常显示。后来到网上查阅了一些资料,有个国外的网站(Techie-Gyan)上说这个问题是由于Apache向外的链接不被允许导致的,于是又检查了系统防火墙以及系统日志等,发现是系统日志里面果然有好多条HTTP连接被阻止的记录,询问了网站管理人员后得知,原来服务器上有个防火墙软件,因为想让系统安全一点,防护级别被提到了最高,于是Apache的HTTP连接就被默认阻止了,更改了防火墙了配置以后,一切正常了。

打包修改过的文件的批处理

 - by Mr.Lodar

在没有进行版本管理的项目中,常常会因为忘记修改过哪些文件而把整个项目都覆盖一遍,既浪费网络带宽又浪费时间,每次覆盖都要在FTP上传好久,于是我就写了一个批处理脚本,将修改过的需要覆盖的文件打包成一个压缩包,代码如下:

@echo off
:: 网站更新文件打包程序

:: 设置临时目录:
set TEMP=temp

set /P FROM=源文件目录^(默认为www^):
if @%FROM%@==@@ set FROM=www

set /P TO=导出压缩包文件名^(默认为update-%date:~0,4%%date:~5,2%%date:~8,2%^):
if @%TO%@==@@ set TO=update-%date:~0,4%%date:~5,2%%date:~8,2%

set /P DAY=修改时间^(m-d-y,默认为今天{%date:~5,5%-%date:~0,4%}^):
if @%DAY%@==@@ set DAY=%date:~5,5%-%date:~0,4%

:: 将要打包的文件复制到临时文件夹,将排除文件列表(excludelist.txt)中的文件排除在外
xcopy %FROM% %temp% /S /Y /I /D:%DAY% /EXCLUDE:excludelist.txt

:: 使用7z命令行程序进行打包
7z a -t7z %TO%.7z .\%temp%\*

:: 删除临时文件
rmdir /S /Q %temp%

echo 文件已打包到 %TO%.7z
pause>nul

改批处理使用了7-zip的命令行压缩工具来打包,将7z.exe复制到当前目录即可
excludelist.txt 中包含了需要排除的文件列表,xcopy的帮助中是这样说明的:

指定含有字符串的文件列表。每一个字符串必须在文件的单独行中。如果有任何字符串与要被复制的文件的绝对路径相符,那个文件将不会得到复制。
例如,指定如 \obj\ 或 .obj 的字符串会排除目录 obj 下面的所有文件或带有 .obj 扩展名的文件。

Apache崩溃提示php5ts.dll出错的问题

 - by Mr.Lodar

现象:

Apache在Windows启动后自动启动服务时出错,跳出错误报告,提示php5ts.dll导致Apache崩溃,同时,所有基于MySQL的PHP程序无法运行,例如phpMyAdmin一登录就出错

原因:

PATH环境变量设置中将MySQL的安装路径也加入在里面,而且MySQL的路径在PHP的路径前面,导致PHP的MySQL模块使用了MySQL安装目录下的libMySQL.dll而不是PHP安装目录下的libmysql.dll,而根据PHP安装目录中install.txt在第966行左右的警告:

Warning

Don’t mix up your installation with DLL files from different PHP
versions. You have the only choice to use the DLL’s and extensions that
ship with your downloaded PHP version.

这个警告说只能使用你下载PHP时一起下载过来的版本的DLL,而上面的设置恰恰混合使用了MySQL里面的DLL和PHP自己的DLL,因而导致了这个问题的产生。

使用 SWFUpload 组件上传的两个问题

 - by Mr.Lodar

1.Flash Cookie Bug: 在非IE内核浏览器下Flash会忽略自身浏览器的所有 cookie , 而会发送持久型的 cookie 到浏览器,但是 Session Only 的 cookie 不会被发送, 也就是说使用 Session 进行登录验证的工作会出现问题,需要使用其它方式,附加上会话验证需要的信息(使用POST参数)以重新启动会话。
2.上传文件类型判断:通过 SWFUpload 上传的文件类型(Content-Type)会变成 application/otcet-stream ,基于此判断文件类型的操作会失败

PHP 附件形式的下载

 - by Mr.Lodar

当下载需要用户登录验证权限、并且可以自定义下载的文件名等情况下需要以附件形式下载文件,代码如下:
(由于 poor IE 的特殊性,需要做特别处理)

header("Content-type: application/octet-stream");
$isIE and $filename = mb_convert_encoding( $filename, 'GBK' , 'UTF-8' ); # IE 不认识UTF-8的中文文件名,所以转换为GBK编码
header('Content-Disposition: attachment; filename="'.$filename.'"'); # 备注: 文件名要做安全过滤,防止跨站攻击
echo file_get_contents($filepath);

WordPress使用固定链接后出现404错误的另一种情况

 - by Mr.Lodar

在导入网站数据到本地站点测试固定链接时出现了404错误,特点是首页也显示404错误,即使仅使用PATHINFO形式的URL也会出现404错误,和网上查到的大多数情况不同的是这里的mod_rewrite已经是启用的了,经过排查,原来错误很简单,常规选项里面的“”设置没有设置正确(由于是导入的数据),修改该选项为正确的URL后,固定链接就可以正常使用了。

WordPress 的“维护模式”

 - by Mr.Lodar

不知是什么时候起(似乎是WP2.7+),WP提供了“维护模式”,在一次升级插件失败的时候我才发现了这个维护模式,激活“维护模式”的方法为:在WP根目录创建一个名为“.maintenance”的文件(注意开头的点号),文件内容为:

<?php $upgrading = 1262304000; ?>

其中的的数字为 Unix 时间戳,可以通过 PHP 函数 time() 以及 strtotime() 获得,在这个时间戳所指定的时间以及之后的600秒钟之前,WP将处于维护模式,访问任何页面都会显示“Briefly unavailable for scheduled maintenance. Check back in a minute.”。

如果你嫌计算时间太麻烦,并且想自己手工切换到非“维护模式”,可以直接使用以下代码作为“.maintenance”的文件内容:

<?php $upgrading = time(); ?>

我们还可以自定义显示的内容,只要在wp-settings.php中找到这句话的附近并修改为你想要显示的内容即可,WP2.9中,这句话位于139行左右。为“维护模式”专门设计一个页面看起来是个好主意。

彻底隐藏桌面图标

 - by Mr.Lodar

自从用了Lunchy,桌面图标就成了多余的东西,于是想要把这些图标隐藏起来,桌面上右键有一个“显示桌面图标”的选项,去掉前面的√,桌面图标就消失了,但是还是可以通过再次点击切换回来,不够彻底,于是打开组策略编辑器(gpedit.msc),在管理模板中展开到“桌面”→“Active Desktop”(如果没有该选项,可以在管理模板上面点右键→“添加删除模板”,把system.adm等添加进来即可),右侧有一个“禁用Active Desktop”,双击修改为“已启用”即可,再桌面上点右键,“显示桌面图标”菜单选项就看不见了

去除WPS个人版中的文字链接广告

 - by Mr.Lodar

找到WPS的安装目录下的插件目录,比如:

D:\Program Files\Kingsoft\WPS Office Personal\office6\addins\

然后在其中找到ifp.dll并删除即可去掉WPS菜单右侧的文字链接广告
很明显的,该文件的描述为 adplugin Module

Update: 其实金山WPS里面提供了不显示广告的设置,在开始菜单→“WPS Office 个人版”→“WPS Office 工具”→“配置工具”中点击“高级”按钮,切换到“升级设置”选项卡,去掉“显示信息推送条”前面的√就可以了(WPS版本是“WPS 个人版 2010”)

Dreamweaver “在onLoad运行_onOpen.htm时……”问题

 - by Mr.Lodar

问题描述:

Dreamweaver 打开时出现如下错误:

在onLoad运行_onOpen.htm时,发生了以下JavaScript错误:
在文件“_onOpen”中:
onOpen is not defined

解决方法:

重新安装DW无法解决该问题,经一番Google,得解决方案如下:

关闭Dreamweaver并删除下面相应的个人配置文件夹中的缓存文件WinFileCache-***.dat或者MacFileCache-***.dat等

个人配置文件夹的位置:

根据操作系统和Dreamweaver的版本,该位置有所不同

Dreamweaver CS4:

  • Vista: C:\Users\<username>\AppData\Roaming\Adobe\Dreamweaver CS4\<language>\Configuration
  • Windows XP: C:\Documents and Settings\<username>\Application Data\Adobe\Dreamweaver CS4\<language>\Configuration
  • Mac OS X: Macintosh HD:<username>:Library:Application Support:Adobe:Dreamweaver CS4:<language>:Configuration

上述各路径中的 <username> 用户在该计算机上的账户名, <language> 指你的操作系统的语言, 该语言通常以两对字母以下划线连接的形式表示, 比如: en_US (英语), es_ES (西班牙语), fr_FR (法语), 中文的语言代码为 zh_CN , 下同 Read this article »