安装方法,我只提一下关键点,网上能找到相关文档,我不啰嗦 1、安装apache2.4.1 卸载: yum remove apr apr-util httpd 下载安装: apr-1.4.6.tar.gz ./configure --prefix=/usr/local/apr-httpd/ && make && make install 下载安装: apr-util-1.4.1.tar.gz ./configure --prefix=/usr/local/apr-util-httpd/ --with-apr=/usr/local/apr-httpd/ && make && make install 下载安装: httpd-2.4.1.tar.gz ./configure --prefix=/usr/local/apache241 --enable-mods-shared=all --enable-deflate --enable-speling --enable-cache --enable-file-cache --enable-disk-cache --enable-mem-cache --enable-ssl --with-ssl=/usr/local/openssl/ --enable-rewrite --enable-so --with-apr=/usr/local/apr-httpd/ --with-apr-util=/usr/local/apr-util-httpd/ 2、安装php5.3.10和php5.4.0是一样的 php-5.4.0.tar.gz ./configure --prefix=/usr/local/php540 --with-gd --with-zlib-dir --with-freetype-dir --with-mysql --with-apxs2=/usr/local/apache241/bin/apxs --enable-mbstring --with-mcrypt --with-curl --with-iconv --enable-soap --with-openssl --enable-zip 3、安装phpredis模块,这个安装大家要注意一下了,php5.3.10是正常安装没什么问题的,但这个模拟本身的问题编译会出错,我反馈给phpredis官方,没想到很快给出了结果,更新的源码,但改完后估计他们也没有测试,还有两个源码文件没有修改,编译还会出错,可以模仿着手工修改一下。 这个是官方的修改 正常安装,php5.3.10可以正常配置安装 下载地址:https://github.com/nicolasff/phpredis,有个图标zip点这个下载。 cd phpredis /usr/local/php540/bin/phpize ./configure --with-php-config=/usr/local/php540/bin/php-config make make install make install后,会把redis.so拷到扩展目录下。如下: 记得php5.3.10是这个路径 php5.3.10/lib/php/extensions/no-debug-zts-20090626/ 下面显示的是5.4.0的目录,5.3.10和这个类似,在make install时注意一下就行了,当然也可以在phpinfo()中查到这个目录。 [root@data nicolasff-phpredis-9577b82]# make install Installing shared extensions: /usr/local/php540/lib/php/extensions/no-debug-zts-20100525/ [root@data nicolasff-phpredis-9577b82]# ll /usr/local/php540/lib/php/extensions/no-debug-zts-20100525/ total 660 -rwxr-xr-x 1 root root 671271 Mar 12 09:42 redis.so 修改php.ini文件 extension_dir = "/usr/local/php540/lib/php/extensions/no-debug-zts-20100525/" extension=redis.so 重启apache就可以在phpinfo信息中看到下面的信息了 Redis Version 2.1.3 对于php5.4.0需要做些修改,昨天他们刚修改了redis.c这个文件,但还落下两个,模仿修改一下即可编译通过。其余操作和php5.3.10一样处理。
现在开始说一下我从php5.2.17过渡到5.3.10碰到的问题: 1、date函数使用前需要使用这个函数做一下设置,当然这个可以在php.ini中进行配置。 date_default_timezone_set('Asia/Shanghai'); 2、很惭愧一个低级错误用php5.2.17一直顺利的在运行,但php5.3.10、php5.4.0都能正确的报错: public static public static function myfunction_name(){} 3、sessionid的自动传递问题,有些应用不得以要用url来传递sessionid,但php5.3.10让我难堪了一下,搞了一天才顺序使用: php5.2.17的代码:
但在php5.3.10还需要再配置一个参数
基本问题解决后说一下apache2.4.1的配置,这个和我之前用的apache2.0配置有些变化 1、需要哪些模块,自已来配置httpd.conf来载入 2、配置文件不全堆在httpd.conf,如虚拟主机的配置文件 在httpd.conf中配置 # Virtual hosts Include conf/extra/httpd-vhosts.conf 然后修改: extra/httpd-vhosts.conf 比较实用的一个配置 <VirtualHost *:80> DocumentRoot "/www/vhost1" ServerName wap.kanshu.com ErrorLog "|/usr/local/sbin/cronolog /usr/local/apache241/logs/%Y/%m/%d/errors.log" CustomLog "|/usr/local/sbin/cronolog /usr/local/apache241/logs/%Y/%m/%d/access.log" combined </VirtualHost> 用这个配置需要安装cronolog-1.6.2.tar.gz,这个版本可能比较老了 另外需要按自己的要求来配置日志文件的格式: 但这个需要载入一个模块: LoadModule logio_module modules/mod_logio.so 然后配置 <IfModule logio_module> # by xxx LogFormat "%P\t%h\t%{%Y-%m-%d %T}t\t%r\t%>s\t%b\t%{Referer}i\t%{User-Agent}i\t%{X-Forwarded-For}i" combined </IfModule> 这里我提一下我的一点经验 %P,这个记录执行某程序的进程编号. 说一下记录这个进程id号的作用:如果你程序有问题了,又很难定位,那么你可以先查看top动态参数,查看哪个进程占用的资源多,记录这个进程的id然后再去查日志,这样就容易定位到某个程序了,当然一个进程会处理很多任务,你可以配置一下让一个进程尽量少执行些任务就死掉。 正常运行时配置 MaxRequestsPerChild 5000 调试时配置 MaxRequestsPerChild 10 这是我引以自豪的一个设置希望能给大家提供帮助! apache2.4.1可能是线程化了,具体情况我说不清楚了,从下面的命令结果可以看出问题,当然你也可以在编译安装apache时在configure中进行配置。 apachectl -l Compiled in modules: core.c mod_so.c http_core.c event.c 注意这里是 event.c 不是 prefork.c redis存储session的一点分享,下面这段代码的功能: 1、多台web服务器可以通过一台或者多台主从redis服务器存取session 2、通过url传递sessionid,当然,可以通过cookie来传递sessionid但注意不要修改cookie的相关配置
还真冷清,害我白折腾这么长时间啊,好事做到底,接着写一下 补充:htmlspecialchars函数的使用请注意默认字符集的改变:php5.4.0默认是ISO-8859-1,php5.4.0默认改为:UTF-8,这个千万要注意! 手册原文是这样说的: http://cn2.php.net/manual/en/function.htmlspecialchars.php string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = 'UTF-8' [, bool $double_encode = true ]]] ) Defines encoding used in conversion. If omitted, the default value for this argument is ISO-8859-1 in versions of PHP prior to 5.4.0, and UTF-8 from PHP 5.4.0 onwards. 我再把我今天碰到的情况和大家说一下,这个函数是支持GB2312字符集的,但不支持GBK及GB18030,但这会让你很是郁闷! 看一下这个说明: GB2312有6763个汉字,GBK有21003个汉字,GB18030-2000有27533个汉字,GB18030-2005有70244个汉字。 也就是说,如果你用GB2312那么你碰到GB2312以外的字符那htmlspecialchars 函数会返回空,注意,不是别的乱码之类的,是空! 一段代码可用来测试,这是我实际碰到的可能你想举个反例还不容易找到这个字的! <?php $str = "啰"; echo htmlspecialchars($str,ENT_XML1,"GB2312"); ?> 这段代码返回的结果是空! 那是不是说这个函数就没办法使用了呢?那也不是的,像下面这样处理就OK了:
再强调一下mb_convert_encoding支持哪些字符集?一定要查手册,不同的版本手册上的说明真还不一样,查手册是个好习惯,尤其是换了版本后,php5.2换到php5.3一定要注意,如果用php5.4更要查手册的!!! http://cn2.php.net/manual/en/mbstring.supported-encodings.php 这个是最新版本的手册。 from:http://bbs.chinaunix.net/thread-3682363-1-1.html |
|Archiver|手机版|小黑屋|创星网络
( 苏ICP备11027519号 )
|网站地图
GMT+8, 2025-2-23 00:44 , Processed in 0.053364 second(s), 16 queries .
Powered by Discuz! X3
© 2001-2013 Comsenz Inc.