Entries in the ‘PHP/ web’ Category:
filed in Linux/c/c++, PHP/ web on Mar.18, 2010
今天一台linux服务器上遭遇Zend加密的php文件无法加密,可是我记得已经安装过Zend Optimizer的啊,phpinfo();查看了一下。发现没有Zend Optimizer;
打开php.ini,看到最后明明有zend扩展配置啊:
[Zend]
zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so
zend_optimizer.version=3.3.0a
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.3.0
zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.3.0
找了好久,终于在运行完php -v的命令后找到了原因,提示:
[root@locoy 5_2_x_comp]# /usr/local/webserver/php/bin/php -v
Failed loading /usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so: /usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so: cannot restore segment prot after reloc: Permission denied
PHP 5.2.10 (cli) (built: Dec 6 2009 01:35:07)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
with eAccelerator v0.9.5.3, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
with Zend Extension Manager v1.2.2, Copyright (c) 2003-2007, by Zend Technologies
上网一搜,原来又是SELinux搞得鬼~~把selinux关了就可以,或者运行
chcon -t texrel_shlib_t /usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so
Tags: php, selinux, zend
filed in Linux/c/c++, PHP/ web on Mar.02, 2010
问题描述:
将一个站搬到新架设的服务器环境中. 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: mime, mime types, nginx
filed in PHP/ web on Feb.23, 2010
遇到一个奇怪的问题,头疼了很久,怀疑是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: flash, web
filed in Linux/c/c++, PHP/ web on Nov.22, 2009
今天在配置一台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: memcache, php, phpize, 扩展模块
filed in PHP/ web on Nov.21, 2009
也许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: fastcgi, php
filed in PHP/ web on Sep.20, 2009
昨天在做ajax调用的时候,发现调用出来的文章内容有的缺少一些内容,搞了半天,原来是iconv函数在作怪~~~
网上说这是php的iconv函数的一个小bug:
原来 iconv( “UTF-8″, “gb2312″ , $string) 应该在第二个参数后面加个参数:
iconv( “UTF-8″, “gb2312//IGNORE” , $string)
ignore的意思是忽略转换时的错误,发现iconv在转换字符”—”到gb2312时会出错,如果没有ignore参数,所有该字符后面的字符串都无法被保存。
在此记录一下~~~
Tags: bug, iconv, php
filed in PHP/ web on Jul.16, 2009
最近在开发视频收藏功能时候,需要根据视频网站如优酷、酷6、土豆网的一个视频链接,能自动获取该视频的真实链接和相对应视频的截图。类似与校内的分享视频的功能~~~~
下面以优酷为例:
假设我们给任意一个优酷视频网址:http://v.youku.com/v_show/id_XMTA0NTM2MzI4.html
要注意一点:优酷网上的视频地址较早些的是:http://v.youku.com/v_show/id_XNTM3MDg2ODA=.html
注意上面的一点点区别,最后有个“=”。
通过分析优酷视频网站的页面内容特点,利用php结合正则表达式,过滤获取我们想要的信息。具体参见下面功能函数。
7db657aaaa2675b67898c626b63ab5fb000
Tags: php, 分析网页, 正则表达式, 视频
filed in PHP/ web on May.19, 2009
Bruce Eckel(Thinking in Java/C++作者) 在他的 5%的神话 (Mythical 5%) 中提到:
5%的程序员开发效率是其他95%程序员的20倍
(5% of programmers are 20x more productive than the other 95%)
按照80-20法则,80%的程序员几乎不看书,不读Blog,不参加技术会议,不持续学习。这些人也可能会进入大公司,他们日复一日的做着重复的工作。另外20%则在专业方面比较主动,他们喜欢阅读,喜欢学习,喜欢参加技术活动。这20%当中又会有80%的人可能不会特别成功,他们仍然走在通往成功的路上奋斗。剩下20%,也就是总数的5%的开发人员具备20倍的开发效率。
那如何成为这5%中的一员呢
Bruce Eckel 的观点:阅读,分析,总结,实践
这5%的人会习惯经常阅读新技术,并喜欢参与各种有潜在价值的新概念的实践,他们会有非常有选择性的参与会议,大部分时间都花在有效率的事情上,将事情做成。
要想比别人效率高出20%,则需要在各个方面达到平衡,而不单只是能将事情搞定那么简单,因此你要使用最好的工具,最优秀的技术,并尽最大的努力。平衡点并 不是从明显的事物上就可以轻松获得,或者是被人告知的经验,或者是大众化的经验。它需要自己摸索并发现事物背后的规律,需要自己去总结并发现。
比如我们通常对各种编程语言优缺点熟记于心,我们通常可以脱口而出比如erlang适合大并发场合等等。但是大部分人不会意识到很多场合语言并不重要。
因此如果你要成为那5你必须持之以恒的坚持学习,多学习编程是有好处的,但是仅仅局限于了解编程是不够的,比如类似以下经验:
*
Tags: 5%, 效率, 时间管理
filed in PHP/ web, Security on Apr.03, 2009
好几天前写的,发现放在草稿箱里好几天了,没发出来。
前短时间看到ecshop出现了一个注射漏洞~~《ECShop注射漏洞》
漏洞产生的原因是goods_script.php里未对$sql变量进行初始化。我到ECSHOP的官网下了个最新版的程序包。果然发现了这个漏洞非常明显,
我把goods_script.php里的代码全贴上来吧:
7db657aaaa2675b67898c626b63ab5fb001
仔细看$sql变量,发现没有,第二层的if后,$sql变量没有初始化。
7db657aaaa2675b67898c626b63ab5fb002
导致了注射漏洞的产生。
我们来看一下Ryat同学的漏洞利用代码:
7db657aaaa2675b67898c626b63ab5fb003
我在自己的服务器上架设了环境测试了一下,发现并没有利用成功,具体原因没有完全搞懂,有时间再好好研究一下,估计是magic_quotes_gpc设置on的原因。
虽然没有利用成功,但我们必须承认这段代码有安全缺陷,而且好像phpcms等好多程序都出现过类似的漏洞,最为开发人员我们要注意考虑安全问题。
Tags: ecshop, php, 安全, 漏洞
filed in PHP/ web on Mar.21, 2009
昨天在网上看到一份php程序员面试题里问:谈谈php的优缺点?
我发现用php这么久了,却不能非常好的回答这个问题~~只感觉php简单、快速,和java比性能上差一些~~~感觉这些理解挺肤浅的。今天在javaeye社区上看到
Tags: java, php, python, 优点, 缺点