php网站搬家引起的”syntax error unexpected $end”解决办法

由于美国服务器访问速度太慢,今天把wordpress程序迁移到韩国的win服务器,在iis7下报错。于是在wp-config.php中打开调试发现如下错误:

Parse error: syntax error, unexpected $end in ……

出错的位置在文件的最后一行,”?>”,网上查说是php语言使用不规范引起的,有的地方开头使用”<?php”,有的地方用”<?”,造成匹配问题。

后来在iis7的php manager插件中编辑php配置就解决了,原因可能是php.ini的默认配置不支持一些wordpress的插件吧!可以在图形界面下修改,也可以找到该文件手动修改。

网上查到相同的问题,并附上原因,摘抄如下:

报错的原因是:集成安装环境包默认的情况下不支持 PHP 短标签
解决办法:打开 php.ini ,找到 short_open_tag = Off 这一行,将 Off 修改为 On,保存退出,重启 Apache 就可以了。

详细的错误分析:

In PHP 5, the following error may appears as an error entry in Apache error log or simply displays on PHP web page, even if calling to php scripts with php_info() works perfectly and successfully returns information on PHP configurations:
Parse Error: syntax error, unexpected $end in ….. scripts.php on line …
The error may caused by a missing curly bracket in PHP script coding. Beside, it may also caused by error in PHP coding in class definition, as in PHP, a class definition cannot be broke up and distributed into multiple files, or into multiple PHP blocks, unless the break is within a method declaration.
But more commonly, the error is often caused by the use of Short Open tags in PHP, To use short open tags, it must be enabled in PHP.INI. Search for short_open_tag in PHP.INI, and change the value to On. The line should look line:
short_open_tag = On

TP-Link TL-WR941N Ver 5.1安装OPENWRT过程

昨天为了试验下adsl多拨刷OPENWRT成砖了,硬件是WR941N Ver 5.1,用的是在原厂固件下的web界面直刷openwrt-ar71xx-tl-wr941nd-v4-squashfs-factory.bin的方法,很可惜刷完后除了lan口一个都不亮,复位也无效,折腾了一晚上才救砖成功,今天打算用一下方法再刷一次。

1.打开ddwrt的网站,下载WR941N对应的DD-WRT固件,

然后用TP-LINK自带的固件升级页面升级成ddwrt,,这样DDWRT就刷好了。

2.通过DDWRT为WR941N Ver5.1刷入OPENWRT

DDWRT刷好后,在IE浏览器输入http://192.168.1.1,在DDWRT“服务”页面中开启SSH服务;然后将下载的OPENWRT固件文件(openwrt-ar71xx-generic-tl-wr941nd-v4-squashfs-factory.bin)通过WinSCP上传到/tmp目录,

3.telnet 到路由器,输入以下命令

cd /tmp/

mtd -r write openwrt-ar71xx-generic-tl-wr941nd-v4-squashfs-factory.bin linux

过几分钟后路由器会自动重启,,这里需要说明的是,WR941N的openwrt固件默认没有打开无线功能,需要插上网线到LAN口,然后在IE界面输入http://192.168.1.1,然后将无线功能启用,

这样就可以正常使用无线功能了。

tplink 941n v5.1 ttl线救砖 刷原版固件教程

TTL接线方法参考大大的.
http://www.openwrt.org.cn/bbs/fo … thread&tid=6538

注意这里是应该插3根线(RX TX GND),v5.1并不带底针需要自己焊上去,材料可以在废旧的主板上找。

具体操作方法参考大大的,里面的命令部分按我下面给的
http://www.openwrt.org.cn/bbs/fo … thread&tid=3617

如果网上其他人提供的5.1命令有点问题刷不进去,下面这段可行
命令部分
setenv serverip 192.168.1.169;setenv ipaddr 192.168.1.1
tftp 0x80000000 abcd.bin
erase 0x9f020000 +0x3c0000
cp.b 0x80000000 0x9f020000 0x3c0000

固件到tplink官网下载好改名abcd.bin就好了

安装windows 7/2008 去除100m隐藏分区

使用win7安装盘自带的分区工具分区,会产生100M的隐藏分区,但可以按下面的方法删除:

1. 在出现分区界面的时候按 shift+f10 调出命令提示符,输入 diskpart 确定,再输入 list disk 确定,这时会列出电脑上的所有硬盘;

2. 如果你只有一个硬盘,就选择硬盘编号是 0 ,输入 select disk 0 确定,这时会提示”磁盘0是所选择的磁盘”;

3. 然后输入 ccreate partition primary size=***XX (这里的输入大家可以自己决定),确定后,会有提示说成功创建分区,这时系统盘的主分区已经创建完成

4. 如果你的硬盘是”主+扩展分区”的形式,那么接着刚才的步骤,继续输入 create partition extended 确定,会提示”创建分区完成”,好了,关闭命令提示符,回到分区界面;

5. 点 高级选项,会看到上面有一个***G的主分区,还有个空白的容量,这就是剩余所有硬盘的扩展分区;

6. 扩展分区需要分成逻辑分区才能使用,用默认的图形分区工具给扩展空白分区进行分区,可以自己决定大小,分完后把每个分区格式化一下;

7. 选择上面的主分区,点下一步,把操作系统安装到里面。

web.config SessionState配置详解

2个.net应用部署在windows 2003 server服务器iis下面的9005端口下.使用各自独立的application pool,其<sessionState/>配置节配置为相同的

,windows 2003 server的asp.net state service服务已启动,运行稳定.
1.如果发生”Unable to serialize the session state. In ‘StateServer’ and ‘SQLServer’ mode, ASP.NET will serialize the session state objects, and as a result non-serializable objects or MarshalByRef objects are not permitted. The same restriction applies if similar serialization is done by the custom session state store in ‘Custom’ mode(无法序列化会话状态。在“StateServer”或“SQLServer”模式下,ASP.NET 将序列化会话状态对象,因此不允许使用无法序列化的对象或 MarshalByRef 对象。如果自定义会话状态存储在“Custom”模式下执行了类似的序列化,则适用同样的限制。)”异常,请检查Session中存储的自定义对象是否都已进行[Serializable]标识;
2.如果发生”[0]Session中UserInfo为空”异常,请检查<sessionState/>配置节是否已在web.config中启用;
3.如果发生SessionState冲突异常,请检查2个应用的<sessionState/>配置节是否都配置为mode=”InProc”;
.NET Framework 常规参考
<sessionState> 元素
为当前应用程序配置会话状态设置。

必选属性
属性 选项 说明
mode 指定在哪里存储会话状态。
Off 指示会话状态未启用。
InProc 指示在本地存储会话状态。
StateServer 指示在远程计算机上存储会话状态。
SQLServer 指示在 SQL Server 上存储会话状态。
可选属性
属性 选项 说明
cookieless 指定不具有 Cookie 的会话是否应用于标识客户端会话。
true 指示应使用不具有 Cookie 的会话。
false 指示不应使用没有 Cookie 的会话。默认值为 false。
timeout 指定在放弃一个会话前该会话可以处于空闲状态的分钟数。默认值为 20。
stateConnectionString 指定远程存储会话状态的服务器名称和端口。例如“tcpip=127.0.0.1:42424”。当 mode 为 StateServer 时该属性是必需的。
sqlConnectionString 为 SQL Server 指定连接字符串。例如“data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind”。当 mode 为 SQLServer 时该属性是必需的。
stateNetworkTimeout 在使用 StateServer 模式存储会话状态时,指定在放弃会话之前 Web 服务器和状态服务器之间的 TCP/IP 网络连接空闲的时间(以秒为单位)。默认值为 10。

ISAPI_Rewrite3 图片防盗链配置

配置说明:
1、RewriteCond %{HTTP_REFERER} !^$ [NC]
允许空“HTTP_REFERER”的访问,即允许用户在浏览器地址栏中直接输入图片地址时图片文件的显示。一般而言,这是可选的,不过,建议这么设置,如果强迫必须具有“HTTP_REFERER”才能访问,可能会带来某些问题,比如说在用户通过代理服务器访问时。
2、RewriteCond %{HTTP_REFERER} !yzmanga.com [NC]
设置允许访问的HTTP来源,包括我们的站点自身、Google、Baidu、xxx.com等。
3、RewriteRule .*\.(gif|jpg|png)$ http://www.yzmanga.com/daolian.aspx [R,NC,L]

定义被盗链时替代的图片,让所有盗链 jpg、gif、png 等文件的网页,显示http://www.yzmanga.com/daolian.aspx文件。

注意:替换显示的图片不要放在设置防盗链的目录中,并且该图片文件体积越小越好。当然你也可以不设置替换图片,而是使用下面的语句即可:
RewriteRule .*\.(gif|jpg|png)$ – [F]
4、说明一下其中的R、NC 和 L
R 就是转向的意思
NC 指的是不区分大小写
L 的作用是指明本次转向到此结束,后续的转向不受先前判断语句的影响
5、防止盗链的文件类型
上例中是 gif、jpg、png,而根据需要,可更改或添加其他文件类型,如rar、mov等,不同文件扩展名间使用“|”分割。
这样的话,就可以基本做到简单的防止被盗链情况的发生,而且可以尽最大可能的减少服务器流量的无畏消耗

使用dropbox架设私人svn服务器

国外免费的svn比较多,其中较优秀的就是google code。最近国内连接不太稳定,经常不能提交,并且他是开源的。于是我考虑吧代码迁移到自己的svn

国内较好的代码托管服务大多数都是收费的,如果假设在自己的服务器或vps上,如果下个月你不想租了岂不是麻烦咯?所以一定要选择一个和google code一样稳定的服务,于是我想到了dropbox

有写程序的人一定会用版本控制软体来控制自己的源代码,如果没有,那代表你不会写程序。

版本控制软体很多,但最常用的应该就是subversion这一套,或者是TortoiseSVN,不过TortoiseSVN核心也是subversion。

但是如果开发者有不只一台电脑,或者是多人共同开发,需要在不同电脑维护同一份code的话,就需要一台svn server来同步所有电脑的code。我相信就算是在一台电脑上开发,一个svn也是很必要的,因为它有版本控制,你不需要花很多时间去备份。

以上,是平常人的作法。以下,我要教的是如何不用花半毛钱,就能有一台不用open source而且有2G以上的空间,并且不限流量的svn server。

课前预习:

1.Dropbox是什么?

2.svn是什么?

3.TortoiseSVN是什么?

正文开始:

dropbox

1.注册一个Dropbox帐号

2.在你的电脑上安装Dropbox

3.做好一切Dropbox的设定

4.安装TortoiseSVN

5.在Dropbox的分享资料夹下面建立一个资料夹叫svn

6.在svn资料夹下使用TortoiseSVN的建立档案库功能,此时你已经有一个svn档案库了

7.把你要维护的code加入svn的档案库,并且commit他

8.Dropbox会把你的svn档案库同步到网路上

9.在另一台电脑上安装Dropbox与TortoiseSVN

10.等待Dropbox同步这台电脑的资料(含svn档案库)

11.使用TortoiseSVN取出刚刚同步下来的svn档案

12.这样你2台电脑都拥有同一个svn档案库了

13.在这台电脑试着改一些code,并且commit他,commit完之后Dropbox又会帮你同步上去

14.另一台电脑会自动同步你commit上去的档案,此时你就可以在TortoiseSVN上使用更新指令更新到最新版的code了…

15.如果你有n台电脑,就在另外n台电脑上重复9~12步骤就可以了

使用这个方式的话,只要等Dropbox把资料同步上去,电脑就可以关机了,不用像普通svn server要一直维持运作等人家下载最新的code,是不是很方便呢!!

注:如果多人经常同时编码,有时会同步出问题,推荐还是用服务器建svn吧!

使用tor指定出口国家的IP

指定国际出口:
在Vidalia里点击”设定”再点”高级”再点” Edit current torrc “在弹出的窗口末尾输入
StrictExitNodes 1
ExitNodes {us}

StrictExitNodes的意思是需要按照ExitNodes指定节点作为出口。ExitNodes中指定的节点可以限制到某个国家,国家代码使用两位字母的缩写并用置于大括号中,不同国家的代码参考这里

去除国家节点
ExcludeNodes {cn},{mo},{hk}

把节点从链路上除去,防止你的tor网络被监听。示例中所示的为表示去除中国大陆,澳门和香港的tor节点。
注意:指定出口为美国可能造成tor速度下降,因为tor有不少高速出口不在美国。如果当前链路速度较慢点击”更换身份”来切换其他链路。

 

现在把连接Tor的方法总结如下:

一、Tor直接连接

现在在中国大陆能直接连接tor网络简直比买彩票中一百万还难,不过如果你有朋友的Tor还能连接你可以让他把他的tor节点信息文件夹发给你,你复制到你的tor相关目录说不定你打开你的tor它很快就变绿了!

二、通过Tor 网桥连接

随着GFW封锁的加剧使用网桥也很难连上tor网络了,不过使用Tor 网桥你还是有较大概率成功的,设置网络里勾选“我的ISP阻止了对Tor网络的连接”然后设置代理不妨试试吧,官方获取tor网桥的方法有三种:点击设置网络里的“立刻搜索网桥”(不过很早就不能直接获取了),访问 Tor 官方网桥公布页面https://bridges.torproject.org/(早就被封锁了,需要翻墙访问),邮箱发送 主题为“get bridges” 的信息到 [email protected]很快就会收到回复网桥。

三、通过国外代理连接

普通国外代理虽然在GFW的干扰下已经不能胜任翻墙了不过用来设置tor代理连接tor网络还是绰绰有余的,设置网络里勾选“我使用代理服务器连接到网络”然后设置代理,代理可以是你找到了普通国外http代理也可以是无界、puff等软件提供的代理,这种方法一般都能成功连接tor网络。

四、通过国外VPN连接

随便找个能用的国外vpn连接后打开tor也就一两分钟你的tor就会变绿了,试用的国外vpn很多很多虽然有不少限制不过用来连接tor网络还是可以的!

SqlServer查询字符串聚集 for xml

sqlserver提供了一系列将查询结果的其中一列的聚集函数,不如Sum(),Avg()等等,这些都是针对数据聚集的函数。那么有没有字符串聚集的函数呢?

没有这样的内置函数,一直以来只能通过自定义函数来实现。

但是sqlserver05以后有了一个比较完美的解决办法,使用for xml path来取以逗号分隔的多行数据的应用
for xml有两个修饰符,还有两个修饰符,一共有四种,分别是:
1、RAW
2、AUTO
3、PATH
4、EXPLICIT
基本上是按照功能的强弱正序排列的,闲话少说,直接看代码:

让Tor Vidalia网络地图显示节点和地理位置

因为业务需要重新用回Tor,发现最新版本的网络地图居然没有国旗,地理位置和节点网格线….

网上搜集了下资料不多,终于找到解决办法:

1,下载一个Tor Browser 解压后在其中\Data\Tor目录中找到geoip文件。

2,将geoip 复制到Vidalia Bundle 目录

3,打开Vidalia 主界面 进入设置–高级–编辑torrc 加入如下语句

GeoIPFile D:\Vidalia Bundle\Vidalia\geoip(此地址指向geoip文件) 
重新启动Vidalia  即可。。
看来是给Vidalia Tor精简掉了,为了保护隐私吧.