[记录]关于php读写操作中文文件的问题
今天碰见一个问题, 采集东西, 写到目录的时候, 会报错不能打开文件, 使用英文名后, rename也不行, 判断是否存在也不行...
百度, google后, 发现原因还是...字符编码问题.
我们常用的有utf-8,gbk两种编码, php内部操作哪种都无所谓, 但是如果涉及到实体文件就必须注意一点:
文件名编码要和php环境所在系统保存一致
比如我是win下用, win肯定是gbk编码了, 所以文件名转换为gbk后, 再读写操作就ok了
今天碰见一个问题, 采集东西, 写到目录的时候, 会报错不能打开文件, 使用英文名后, rename也不行, 判断是否存在也不行...
百度, google后, 发现原因还是...字符编码问题.
我们常用的有utf-8,gbk两种编码, php内部操作哪种都无所谓, 但是如果涉及到实体文件就必须注意一点:
文件名编码要和php环境所在系统保存一致
比如我是win下用, win肯定是gbk编码了, 所以文件名转换为gbk后, 再读写操作就ok了
参考地址:
PHP手册: header — Send a raw HTTP header
w3school: PHP header() 函数
header() 函数向客户端发送原始的 HTTP 报头。
认识到一点很重要,即必须在任何实际的输出被发送之前调用 header() 函数
其实, 大部分都是用header重定向的, 但是很多人都忽略了一点, 就是header是不会停止php运行的, 所以如果用在判断然后导到不同的url去, 就要严谨点的加个exit();了
所以简单记录下吧, 免得自己忘记.
原文链接: cygwin/gcc与MinGW
cygwin/gcc和MinGW都是gcc在windows下的编译环境,但是它们有什么区别,在实际工作中如何选择这两种编译器。
cygwin/gcc完全可以和在linux下的gcc化做等号,这个可以从boost库的划分中可以看出来端倪,cygwin下的gcc和linux下的gcc完全使用的是相同的Toolsets。
所以完全可以和linux一起同步更新gcc版本,而不用担心问题,并且在cygwin/gcc做的东西(不用win32的)可以无缝的用在linux下,没有任何问题。是在windows下开发linux程序的一个很好的选择。但是在cygwin/gcc下编译出来的程序,在windows执行必须依赖cygwin1.dll,并且速度有些慢,如果不想依赖这个东西的化,必须在gcc的编译选项中加入-mno-cygwin。加入这个选项其实gcc编译器就会自动的选择在安装cygwin/gcc时安上的mingw,这个mingw就是gcc的一个交叉编译。
很简单, 一小段配置就行:
vi /etc/sysconfig/autofsck
AUTOFSCK_DEF_CHECK=yes
PROMPT=yes
保存, 退出, 就行了
原文链接: nginx关闭favicon.ico 日志记录 禁止访问隐藏文件
把以下配置放到 server {} 块.
关闭favicon.ico不存在时记录日志
location /favicon.ico {
log_not_found off;
access_log off;
}
不允许访问隐藏文件例如 .htaccess, .htpasswd, .DS_Store (Mac).
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
参考地址: SSH服务监听多个端口
因为是在家里跑个pc, ADSL DDNS外网连接, 所以常用的21 22 3308 443 80啊这些肯定是不能直接使用啦(也为了安全), 但是又为了方便, 所以ssh nginx都要同时监听22 80 和另外的端口提供给外网链接.
ssh监听多个端口的方法很简单:
vi /etc/ssh/sshd_config
Port 22
Port 8022 #这样就行啦, 想再多个端口就这样多写几个
service sshd restart #重启sshd就ok了
当然呢, 也才可以查看上面的参考地址, 使用ListenAddress, 效果也是一样滴.
家里运行了一台pc机, 当做服务器用, 路由器是tp-link的wr841n, 平时挂着svn nginx samba mysql cacti transmission...等 因为网络还不错, 是对等网络, 上传下载都能达到270k, 所以一直挂着pt, 24*7的...
应该是路由器压力比较大, 经常跑死, 所以就想着定时启动下.
好了, 直接贴代码:
下载地址(Github): transmission-web-2.7.x/2.8 中文版
下载解压后, 替换web整个目录, 以linux下为例web目录在安装目录下share/transmission/web, 版本对应不能错, 不区分平台(Windows/Linux/MacOS)通用, 另外建议做好备份.
2.7.3有增加实时上传下载显示, 原版是没有了, 上个版本还在的, 应该是漏掉了.
2.8往后的版本变化较大(单指webui), 支持每个种子定义下载目标文件夹; 2.8.x的汉化慎重斟酌了很多细节翻译, 翻译更加合理, 比如下载完成和未完成的提示文字... 详见截图;
2.8.2 增加IE10支持.
2.8.4 增加重命名种子.
汉化仅仅是将html和js内的英文替换为中文, 没有其它修改, 可放心使用.
linux下:
进入svn/hooks目录, 把pre-revprop-change.tmpl复制一份名为pre-revprop-change
cp /data/svn/hooks/pre-revprop-change{.tmpl,} #我的svn放在/data/svn下面
chmod +x /data/svn/hooks/pre-revprop-change
windows同理
参考文章: chmod分别设置子目录和文件不同权限
很多刚玩linux的, 或者怕麻烦的人都喜欢777, 什么都777, 有时候又怕不对劲, 所以想还原.
我也差不多吧, 今天弄cacti的时候, 就是不出rrd文件, so 我也777了几个目录, 然后想还原, 但是文件和目录权限是不一样的, 所以想找个批量的方法来做, 一般目录都是755, 文件一般都是664:
所以要求就是:
1 将当前目录中的所有“子目录”的权限设置为755
2 将当前目录中的所有“文件”的权限设置为644
方法是:
chmod 644 -R ./*
chmod 755 `find ./* -type d`
或者
find /path -type f -exec chmod 644 {} \; #这里应该是"\", 而不是"/", 原文有错误
find /path -type d -exec chmod 755 {} \;
第一种解说: 先全部修改成664, 然后查找目录, 修改为755.