BOM--字节序标记

读代码的时候看到这样一段 $template_content = str_replace("\xEF\xBB\xBF", ‘’, $template_content); 不知道是何作用,经过一番查找资料,终于解开了这个疑问 资料如下: 在window下面用记事本编辑文件的时候,如果保存为UNICODE或UTF-8,分别会在文件的开头加上两个字节“\xFF\xFE”和三个字节“\xEF\xBB\xBF”。在读取的时候就可能会遇到问题,但是不同的环境对这几个多于字符的处理也不一样。(其他的文本编辑工具也存在这个问题,但是可以选择去除bom,如editplus的设置:参数选择->文件->utf-8, 选择总是删除签名) 如果前面三个字符“\xef\xbb\xbf”则保存格式是utf-8 如果前两个字符是“\xff\xfe”则保存格式是Unicode Unicode规范中有一个BOM的概念。 BOM——Byte Order Mark,就是字节序标记。在这里找到一段关于BOM的说明: 在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符"ZERO WIDTH NO-BREAK SPACE"。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little- Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。 UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。Windows就是使用BOM来标记文本文件的编码方式的。 容易导致header session_star ob_start的问题,utf-8编码的文件中,BOM占3个字节,由于php设计时没有考虑BOM的问题,这三个字节会直接输出,如果这时在程序里调用了session函数,就会出问题了 附:文件应该使用 Unicode (UTF-8) 编码保存。同时不要使用 字节序标记(BOM) 。与 UTF-16 和 UTF-32 不同,UTF-8 编码的文件不需要指明字节序,而且 字节序标记(BOM) 在PHP中会产生预期之外的输出,阻止了应用程序设置它自己的 头信息。应该使用Unix 格式的行结束符(LF)。

2009-09-23 · 1 分钟 · admin

spawn-fcgi: no fastcgi application given

刚装完spawn-fcgi 起动会遇到这个错误. 修改 spawn-fcgi 起动脚本 spawn_fcgi_app 加个 php-cgi 地址,或在rc.conf 加上也一样

2009-08-16 · 1 分钟 · admin

FastCgi 翻译文档

同事业余时间翻译的,我把它整理了出来,其中绿色的是我没有使用默认值的参数。 IdleTimeout n (300 seconds) An idle fastcgi application will be terminated after IdleTimeout seconds. 空闲线程将在 n 秒后被终止。 IdleScanInterval n (120 seconds) The scan interval for idle fastcgi applications. 扫描空闲线程的时间间隔。 BusyTimeout n (300 seconds) a fastcgi application will be terminated if handing a single request longer than busy timeout. 一个线程被单独占用 n 秒后将被终止。 BusyScanInterval n (120 seconds) The scan interval for busy timeout fastcgi applications. 扫描繁忙线程的时间间隔。 ErrorScanInterval n (3 seconds) The scan interval for exit pending fastcgi applications....

2009-07-16 · 3 分钟 · admin

Extmail1.1登录显示:Unix::Syslog not found

Unix::Syslog not found, please install it first! (in cleanup) Undefined subroutine &Ext;::Logger::do_closelog called at /var/www/extsuite/extmail/libs/Ext/Logger.pm line 87. 没装perl-Unix-Syslog包, 安装方法 perl -MCPAN -e shell cpan>install Unix::Syslog

2009-06-23 · 1 分钟 · admin

nginx freebsd 官方网站优化

OS & Hardware FreeBSD 7.1 AMD64, dual-core CPU 4GB RAM Purpose Web server & reverse proxy Load description 45K inactive keep-alive connections HTTP request is about 5,000 req/s, mostly small static files, all are cached by VM System config /boot/loader.conf: vm.kmem_size=1844M kern.maxbcache=64M kern.ipc.maxpipekva=4M /etc/sysctl.conf: kern.ipc.nmbjumbop=192000 kern.ipc.nmbclusters=229376 kern.ipc.maxsockets=204800 net.inet.tcp.maxtcptw=163840 kern.maxfiles=204800 kern.ipc.somaxconn=4096 Retrieved from “http://wiki.nginx.org/FreeBSDOptimizations"

2009-05-31 · 1 分钟 · admin

freebsd下 nginx 日志每天分割

#!/bin/sh date today=date +"%Y_%m_%d" logdir=/pub/log daydir=/pub/log/$today expdays=7 if [ ! -d $daydir ] ; then mkdir -p $daydir fi cp /pub/log/wwwlogs.log $daydir/wwwlogs.log #清空当前日志 /usr/bin/true > /pub/log/wwwlogs.log #删除7天前的过期文件 #find $daydir -type d -mtime +$expdays -maxdepth 1 | xargs rm -rf #每天12点运行 #0 0 * * * /cut_nginx_log.sh

2009-05-13 · 1 分钟 · admin

如何加密PHP文件

由于安全原因,有些时候需要把PHP文件加密。zend是收费的软件,而且价格不菲,让人望尘莫及。这里介绍另一种加密方法:php-screw。 php-screw是一款开源,免费,自由使用的软件,它不仅使用方便,而且可以自定义加密字符串,字符串的长度不受限制。下面这些操作是在Debian环境下实现的。 1、下载软件包。到http://sourceforge.net/projects/php-screw/下载php-screw。下载得到的是tar包。 2、安装必须的软件环境:apt-get install php5-dev php5 3、把在第一步中得到的软件包解压:tar -zxvf php_screw-1.3.tgz 4、进入解压缩后得到的目录:cd php_screw-1.3,然后执行命令:phpize生成一些配置安装文件。 5、检查编译环境: ./configure #检查编译环境 自定义加密字符串,你据自己的意愿,修改文件my_screw.h内容,这里面主要记录的是加密字符串。 make #编译 6、把文件modules/php_screw.so拷贝到/usr/lib/php5/2006*/目录下。 7、修改文件/etc/php5/apache2/php.ini,在需要位置添加如下内容: extension=php_screw.so 8、在WEB服务器的根目录里创建文件phpinfo.php,文件的内容如下: 9、在浏览器里输入http:///phpinfo.php,看看php_screw是否生效。 10、进入tools目录,执行命令: make 生成文件screw。 11、进入需要加密的PHP文件所在的文件夹,执行命令 /full/path/of/screw .php 这时的文件便被加密了,原来的文件被重新命名为:.php.screw。 12、screw这个命令只支持单个文件的加密,不支持/full/path/of/screw .php这种命令格式。如果需要把整个目录下的文件加密需要用如下命令: find . -name ‘.php’ -exec /full/of/path/of/screw {} ; 以上写的这些是在Debian环境下实现的,如果在window平台下,只要加载了php_screw这个模块,加密的文件也可以正常显示,但不能在windows平台下进行加密。 好了,用php_screw加密php文件介绍完了。如果您对这个工具感兴趣,不防试一试。 转自 http://afericazebra.blog.163.com/blog/static/300504082008101902427449/ 不错,freebsd 的port 也有,在 /usr/ports/www/php-screw ,正好用一下

2009-05-06 · 1 分钟 · admin

更新與安裝 - Install Apache 2.2.11 or Upgrade on FreeBSD

Apache 2.2.11 主要是更新了個錯誤 步驟如下 1.更新 FreeBSD 的 src 與 ports 到目前最新版 cd /usr/src make update 就個人經驗而言,最好是將相關的 apache-, php5- , pear-* , pecl-* , Smarty , eaccelerator , webmail 等都備份後移除 然後再一步一步安裝更新上去 這樣雖然很麻煩,卻最能避免產生問題後無法處理的情況 PS : 都安裝好了,沒有錯誤訊息, Apache 卻開不起來 2.先備份設定後,然後將相關套件及設定全數移除 pkg_info |sort > /root/pkg.info.txt tar -zcvf /root/etc.tar.gz /etc tar -zcvf /root/usr.local.etc.tar.gz /usr/local/etc tar -zcvf /root/etc.namedb.tar.gz /var/named/etc/namedb tar -zcvf /root/ports_options.tar.gz /var/db/ports pkg_delete -f /var/db/pkg/apache* pkg_delete -f /var/db/pkg/pecl* pkg_delete -f /var/db/pkg/eaccelerator* pkg_delete -f /var/db/pkg/smarty* pkg_delete -f /var/db/pkg/joomla* pkg_delete -f /var/db/pkg/eGroupware* pkg_delete -f /var/db/pkg/pear* pkg_delete -f /var/db/pkg/php5* 3....

2009-04-17 · 2 分钟 · admin

freebsd7.x安装vmware-tools

刚开始搞freebsd,先在vmware里试试。 先要安装compat6x 在/usr/ports/misc/compat6x 然后执行 ln -s /usr/local/lib/compat/libc.so.6 /lib 原文 http://bbs3.chinaunix.net/thread-1364897-1-5.html

2009-04-13 · 1 分钟 · admin

在FreeBSD中安装虚拟机(使用于BSD)

原来BSD中也有虚拟机的.速度不亚于VM 在FreeBSD6.2中, #cd /usr/ports/emulators/qemu #make WITH_KQEMU=yes install clean 选项默认 安装好后,就可以用了 要重起一下电脑,如不重起,可以 #rehash #kldload kqemu.ko 速度真的很快!但对我最重要的是,它很简洁. 原来在xp用VM装了openBSD 用qemu来运行. 挂载 mount -t ntfs /dev/ad0s1 /mnt 然后 #cd /mnt/OpenBSD #qemu Other.vmdk 启动成功! 下来怎么新安装一个虚拟系统:( 我是在边安装边写的,:-),网上说的和实际有点出入的) #df -h 看看自己的硬盘空间,看装在哪里合适 我的/usr还有很多空间,就装在这里吧 #mkdir /usr/qemu #cd /usr/qemu #qemu-img create FreeBSD.img 3G (这里是建立一个镜像文件,给它多大空间,我给3G,名叫FreeBSD.img.) #qemu -hda FreeBSD.img -cdrom /dev/acd0 -boot d -m 256 -hda 指定硬盘 -cdrom 指定光驱 /dev/acd0 (iso就是文件路径) -boot d a软盘 c 硬盘 d 光驱 -m 内存大小 其间可能要出现错误: Bad system call (用kldload aio解决)...

2009-04-11 · 1 分钟 · admin

php5.2.9 不能加载 eAccelerator 问题

装上php 5.2.9发现不能加载 eAccelerator ,php也没有报错,不知道是什么问题, 看了一篇文章 在 /usr/local/etc/php/extensions.ini 加上 extension=eaccelerator.so才可以解决, [eaccelerator] zend_extension = "/usr/local/lib/php/20060613-zts/eaccelerator.so" eaccelerator.shm_size = "128" eaccelerator.cache_dir = "/tmp/eaccelerator" eaccelerator.enable = "1" eaccelerator.optimizer = "1" eaccelerator.check_mtime = "1" eaccelerator.debug = "0" eaccelerator.log_file = "/var/log/httpd/eaccelerator.log" eaccelerator.filter = "" eaccelerator.shm_max = "0" eaccelerator.shm_ttl = "0" eaccelerator.shm_prune_period = "0" eaccelerator.shm_only = "0" eaccelerator.compress = "1" eaccelerator.compress_level = "9" eaccelerator.keys = "shm" eaccelerator.sessions = "shm" eaccelerator.content = "shm" 原文 http://gary1974tw.pixnet.net/blog/post/26613606 可惜被x了

2009-04-11 · 1 分钟 · admin

Конфиг ядра FreeBSD 7 для работы в VMware ESXi (FreeBSD/amd64)

cpu HAMMER ident VMWARE options SCHED_ULE # ULE scheduler options PREEMPTION # Enable kernel thread preemption options INET # InterNETworking options INET6 # IPv6 communications protocols options SCTP # Stream Control Transmission Protocol options FFS # Berkeley Fast Filesystem options SOFTUPDATES # Enable FFS soft updates support options UFS_ACL # Support for access control lists options UFS_DIRHASH # Improve performance on big directories options UFS_GJOURNAL # Enable gjournal-based UFS journaling options MD_ROOT # MD is a potential root device options NFSCLIENT # Network Filesystem Client options NFSSERVER # Network Filesystem Server options NFSLOCKD # Network Lock Manager options NFS_ROOT # NFS usable as /, requires NFSCLIENT options NTFS # NT File System options MSDOSFS # MSDOS Filesystem options CD9660 # ISO 9660 Filesystem options PROCFS # Process filesystem (requires PSEUDOFS) options PSEUDOFS # Pseudo-filesystem framework options GEOM_PART_GPT # GUID Partition Tables....

2009-04-08 · 3 分钟 · admin

修改时间出现date: can't reach time daemon, time set locally

kern.securelevel 过高了,郁闷

2009-04-08 · 1 分钟 · admin

vmware freebsd 时间不准解决办法

/boot/loader.conf 加入 kern.hz=100 hint.apic.0.disabled=1 The default “tick” on FreeBSD is 1000 Hz, which is far greater than what a virtual machine can keep up with accurately, 100Hz is more reasonable value. APIC has been known to cause issues with FreeBSD, but is required if you are using SMP in your guest (2 or more processors). 原文 http://peterkieser.com/technical/vmware-server-issues/

2009-04-08 · 1 分钟 · admin

freebsd下在一块网卡下增加删除ip

在bge0网卡上增加ip别名: ifconfig bge0 add alias xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx up 说明:这里掩码的设定是这样的,同一个网断的第一个ip掩码按照真实的掩码设置。在这个网段下面再增加ip时,掩码就是255.255.255.255了!切记! 在bge0网卡上删除ip别名: ifconfig bge0 -alias xxx.xxx.xxx.xxx 下路由配置 配置路由 在同一个局域网上的计算机是直接连通的,但是不同的网络上的计算机并没有直接相连,只能通过一台特殊的专用计算机 -路由器来完成连通。路由器连接有多个网络界面,每一个网络界面连接到一个相应的网络上,具有一个这个网络上的IP地址,因此,网络内部的计算机可以和路由器本身相互通信。 当网络内部的计算机要向外连接的时候,数据包实际是交给路由器的,路由器再将数据包从连接外部网络的网络界面上转发出去,数据包经过这样一个一个的转发过程,直到到达目的地。对于网络内部的计算机来讲,没有必要了解数据包的整个转发的路径和经过的所有路由器的信息,只需要知道第一步需要将数据包交给哪一个路由器就可以了。因此,计算机必须知道与它直接相连接的路由器的有关信息,这个过程就是路由配置的过程。 进行路由配置有两种途径,一种是由管理员设置所有的路由信息,由于数据是手工设置,因此称为静态路由设置。另一个是启动一个支持路由交换协议的进程,自动侦测网络上的所有路由器及其相关信息,这称为动态路由设置。 在 FreeBSD系统不用做专门路由器的情况下,一般地说使用静态路由设置足够满足网络通信的需要。 缺省网关 在最简单的情况下,一个网络向外通过一个路由器完成向外连接,这个路由器被称为缺省网关,它负责几乎所有的向外连接任务。假设缺省网关的地址为 192.168.1.254, 则设置缺省网关的命令为: freebsd# route add default 192.168.1.254 add net default: gateway 192.168.1.254 //成功配置缺省网关 add net default: gateway 192.168.1.254: File exists //如果系统已经设置了缺省网关,那么系统会报告错误 freebsd# route delete default delete net default //成功删除缺省网关 freebsd# route flush //清除所有路由 default 192.168.1.254 done 上述命令执行之后立即生效,因此,可能会影响已经建立的连接。为了保存缺省网关的配置,同样也需要将配置写入系统配置文件 rc.conf。 defaultrouter=“192.168.1.254” 仅仅配置缺省网关的大部分情况是在计算机处于整个互联网的边缘,网络中仅仅需要一个路由器接入互联网就可以了。 2) 其他静态路由设置 更复杂的情况下,计算机所处的网络与多个网络相连接,网络中存在多个路由器,每个路由器负责到一些网络的转发任务,而不负责到全部网络的转发任务。这种情况下,如果将所有的数据都发给一个路由器,那么原则上它只能正确转发目的是它自己负责的网络的数据。实际使用当中,路由器将使用 ICMP协议,向发送数据的主机报告路由错误。 因此,应该在计算机中配置这个网络上所有路由器及这些路由器负责的相应网络的路由数据,以便计算机选择正确的路由器转发数据包。同样,也必须使用 route命令增加到各个网络的静态路由数据。...

2009-04-01 · 2 分钟 · admin