MIME Types惹的祸(IE和Firefox处理MIME Types的区别)

问题描述:
将一个站搬到新架设的服务器环境中. nginx + php + mysql + CentOS ,遇到一个奇怪的问题,IE下浏览正常,但是在火狐下完全乱的。用firebug查看css,提示 “该URL 的资源不是文本 css” …应该是无法读取css文件。开始以为是浏览器兼容问题,或者是css文件里面有语法错误…但是在本地测试环境里都是正常的啊?

问题分析:
通过抓包分析获取css的数据包(请求包 Request Headers 和响应包的Response Headers),发现服务器响应包(Response Headers)的Content-Type属性为application/octet-stream;在火狐下直接输入css文件访问路径,发现弹出下载窗口…我记得在火狐下应该能直接查看css文件内容才对的啊~~~通过比较其他正常网站的css文件请求数据包,发现他们的Content-Type的属性是text/css~~~
于是怀疑是Content-Type的问题,查看nginx的配置文件nginx.conf

worker_processes 2;
error_log /var/log/nginx/error_log info;
events {
worker_connections 1024;
use epoll;
}
http {
#include mime.types;
default_type application/octet-stream;

log_format main
‘$remote_addr – $remote_user [$time_local] ‘
‘”$request” $status $bytes_sent ‘
‘”$http_referer” “$http_user_agent” ‘
‘”$gzip_ratio”‘;
client_header_timeout 10m;
client_body_timeout 10m;
send_timeout 10m;
connection_pool_size 256;
client_header_buffer_size 1k;
large_client_header_buffers 4 2k;
request_pool_size

Tags: , ,

Comments (1)

error: No curses/termcap library found

今天编译安装mysql的时候遇到error: No curses/termcap library found错误,网上说是ncurses没装,可rpm -qa | grep ncurses发现已经安装了啊,原来是缺少ncurses-devel.其实常常遇到类似的问题,都是由于devel包没装~~

mark一下

Leave a Comment

关于ldconfig及其使用

今天试用了一下张宴大师的HTTPSQS【HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key/Value 数据库来做数据的持久化存储。】
安装过程一切顺利,但使用中遇到一个错误:
[root@localhost httpsqs]#httpsqs -h
httpsqs: error while loading shared libraries: libtokyocabinet.so.9: cannot open shared object file: No such file or directory
提示找不到一个链接库(libtokyocabinet.so.9),find发现此文件位于/usr/local/lib目录,而系统搜索的是/usr/lib目录,可以简单的做一个软链接(ln -s)来解决问题,还有更好的解决方法是
将/usr/local/lib添加到/etc/ld.so.conf文件中,然后在命令行执行/sbin/ldconfig

man ldconfig查看ldconfig命令的描述,
ldconfig creates the necessary links and cache to the most recent shared
libraries found in the directories specified on the command line, in the
file /etc/ld.so.conf, and in the trusted directories (/lib and /usr/lib).
The cache is used by the run-time linker, ld.so or ld-linux.so. ldconfig
checks the header and filenames of the libraries it encounters when deter-
mining which versions should have their links updated.
你会发现他默认是在/lib and /usr/lib这两个目录下找的,而我们的libtokyocabinet.so.9是安装在/usr/local/lib下的。

罗嗦一句:Linux下的man是个好东西,熟悉了会比google解决问题的效率高~~~

Tags: ,

Leave a Comment

Flash上传功能无法读取FireFox中的Session

遇到一个奇怪的问题,头疼了很久,怀疑是firefox的bug或者根本就不支持…
用flash做一个上传图片的功能。系统用了Zend框架,默认的zend的auth,session认证。需要登入后才能上传。上传处理图片的函数用到了登入用户ID,保存图片到相应的用户id的目录下面。IE下都正常,但在火狐始终无法获取已经认证的用户ID,抓包返回用户ID为null。后来仔细抓包分析了IE下上传图片数据包的session和火狐下上传图片数据包的session。
IE下访问页面的session和上传图片数据包的session是一样的,而火狐下是不一样的。说明是火狐下flash上传读取不到session的原因吧。
应该是Flash上传功能无法读取FireFox中的Session。看来只能将用户id通过传递参数来实现了。

其他资料:
ActiveX模式下的Flash插件使用的是IE的链接池,所以获取的Session是一致的,而在Firefox下的是Plugin模式,使用自有的链接,没有使用FF的链接池,所以产生了两个不同的链接,所以Session找不到了,不过也不是没有解决办法,可以通过页面将 SessionID传给Flash,Flash在上传访问后台程序,如PHP时,将SessionID传给PHP,PHP可通过此SessionID找到相应的Session
相关链接:http://www.klstudio.com/post/186.html

Tags: ,

Leave a Comment

phpize是什么?

今天在配置一台nginx的web服务器时,参考张宴(blog.s135.com)大师的《Nginx 0.8.x + PHP 5.2.10(FastCGI)搭建胜过Apache十倍的Web服务器(第5版)》
安装php(fastcgi模式)的时候,常常有这样一句命令:/usr/local/webserver/php/bin/phpize

一、phpize是干嘛的?

phpize是什么东西呢?php官方的说明:
http://php.net/manual/en/install.pecl.phpize.php

phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块

比如你想在原来编译好的php中加入memcached或者ImageMagick等扩展模块,可以使用phpize,通过以下几步工作。

二、如何使用phpize?

当php编译完成后,php的bin目录下会有phpize这个脚本文件。在编译你要添加的扩展模块之前,执行以下phpize就可以了;

比如现在想在php中加入memcache扩展模块:我们要做的只是如下几步
————————————————————————
tar zxvf memcache-2.2.5.tgz
cd memcache-2.2.5/
/usr/local/webserver/php/bin/phpize
./configure –with-php-config=/usr/local/webserver/php/bin/php-config
make
make install
————————————————————————
注意./configure 后面可以指定的是php-config文件的路径

这样编译就完成了,还需要做的是在php.ini文件中加入extension值
extension = “memcache.so”

Tags: , , ,

Leave a Comment

查漏补缺:FastCGI

也许FastCGI早就不陌生,但是FastCGI到底是什么?我倒真没太理解,只知道用FastCGI就对了,快!

FastCGI的官网:http://www.fastcgi.com/

FastCGI is simple because it is actually CGI with only a few extensions. 很谦虚的说他只是CGI的一点点扩展而已;
一、FastCGI是什么?

FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要 行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存 中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail-Over特性等等。

FastCGI的工作原理是:
1、Web Server 启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module);
2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程 (在任务管理器中可见多个php-cgi.exe)并等待来自Web Server的连接。
3、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi.exe。
4、FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在 WebServer中)的下一个连接。 在正常的CGI模式中,php-cgi.exe在此便退出了。
在上述情况中,你可以想象 CGI通常有多慢。每一个Web请求PHP都必须重新解析php.ini、重新载入全部dll扩展并重初始化全部数据结构。使用FastCGI,所有这些 都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent database connection)可以工作。

Tags: ,

Leave a Comment

谈web2.0下的网络营销–Geekcook篇

Geekcook.com一个非常有创意的Tee网店。与其说网店,它更像是一个表达对互联网热爱的的方式。最早是从Twitter上看到了,看到推友 从@geekcooktweet买了件Tee。当时是感@geekcooktweet这个网名和自己的网名好像,点进去一看,就感觉到了他的独特性。立即买了件twitter tee 。当时Geekcook.com是用一个wordpress程序搭的小站,里面简单的展示了他有点商品。商品都非常个性化,很IT !!!

show一下我买的twitter Tee :

让我思考更多的是他的这种模式。单独的blog程序,摆脱了淘宝网的框框架架,第一眼给人以独特的感觉。而独立网店有更强的可制定性。更重要的是,他能结合更多的web 2.0工具进行网络营销。  Rss、Twitter、Tag。推广的时候以独立域名,独立页面的形式,这种对于追求个性、喜欢互联网的人来说是非常有吸引力的,特别是Geekcook.com销售的商品又是以 互联网 为主题的Tee 。

适合的商品(Tee)+适合的目标人群(IT人)+适合的营销手段(sns、twitter、blog) = 成功的营销(网络营销)

twitter为代表的围脖改变了信息传播的方式,使信息的传播更迅速,这给网络营销带来了新的思考。如何利用这些web

Tags: ,

Leave a Comment

不是iconv函数的bug

上一篇把题目写成《iconv函数的小bug》怪吓人的~~~华晨同学的回复使我感到自己的不求甚解.正所谓知错能改,善莫大焉。于是我重新查了一遍:php官方的说明:http://cn.php.net/manual/en/function.iconv.php
函数原型:string iconv ( string $in_charset , string $out_charset , string $str )
特别是第二个参数说明:
The output charset.

If you append the string //TRANSLIT to out_charset transliteration is activated. This means that when a character can’t be represented in the target charset, it can be approximated through one or several similarly looking characters. If you append the string //IGNORE, characters that cannot be represented in the target charset are silently discarded. Otherwise, str is cut from the first illegal character and an E_NOTICE is generated.

意思是如果你在第二个参数后面加上//TRANSLIT ,这样的话,当遇到目标输出的编码不认识的字符的时候,能被一个或几个近似的字符代替;而如果在第二个参数后面加上//IGNORE的时候,当目标输出的编码不认识的时候则什么也不操作;什么都不加的时候则会报错~~~

手册里面有个非常生动的例子:

53babdc90a1976732e5ffde391ccb133000

输出结果是:

Original :

Tags: ,

Comments (1)

iconv函数的一个小bug

昨天在做ajax调用的时候,发现调用出来的文章内容有的缺少一些内容,搞了半天,原来是iconv函数在作怪~~~
网上说这是php的iconv函数的一个小bug:
原来 iconv( “UTF-8″, “gb2312″ , $string) 应该在第二个参数后面加个参数:
iconv( “UTF-8″, “gb2312//IGNORE” , $string)

ignore的意思是忽略转换时的错误,发现iconv在转换字符”—”到gb2312时会出错,如果没有ignore参数,所有该字符后面的字符串都无法被保存。

在此记录一下~~~

Tags: , ,

Comments (2)

[原]php分析抓取视频网站视频链接与截图

最近在开发视频收藏功能时候,需要根据视频网站如优酷、酷6、土豆网的一个视频链接,能自动获取该视频的真实链接和相对应视频的截图。类似与校内的分享视频的功能~~~~

下面以优酷为例:
假设我们给任意一个优酷视频网址:http://v.youku.com/v_show/id_XMTA0NTM2MzI4.html
要注意一点:优酷网上的视频地址较早些的是:http://v.youku.com/v_show/id_XNTM3MDg2ODA=.html
注意上面的一点点区别,最后有个“=”。
通过分析优酷视频网站的页面内容特点,利用php结合正则表达式,过滤获取我们想要的信息。具体参见下面功能函数。

53babdc90a1976732e5ffde391ccb133001

Tags: , , ,

Leave a Comment