php.ini优化

PHP引擎缓存优化加速 eaccelerator zend opcode xcache 使用tmpfs作为缓存加速缓存的文件目录 bash 1 2 mount -t tmpfs tmpfs /dev/shm -o size=256m mount -t tmpfs /dev/shm/ /tmp/eaccelerator/ 利用好tmpfs 1.上传目录缩略图临时处理目录/tmp. 2.其他加速器临时目录/tmp/eaccelerator/ php.ini参数优化 无论是 apache 还是 nginx,php.ini都是适合的。而 php-fpm.conf 适合nginx。而php-fpm.conf更适合 nginx+fcgi 的配置。首选选择产品环境的 php.ini 开发场景:development 生产环境:production 打开php的安全模式 php的安全模式是个非常重要的php内嵌的安全机制,能够控制一些php中的函数执行,比如system() ,同时把很多文件操作的函数进行了权限控制。php5.4后弃用 该参数配置如下: conf 336 ; Safe Mode 337 ; http://php.net/safe-mode 338 safe_mode = Off 用户和安全组 当safe_mode打开时,safe_mode_gid被关闭,那么php脚本能够对文件进行访问,而且相同组的用户也能够对文件进行访问。建议设置为safe_mode_gid=off; 如果不进行设置,可能我们无法对我们服务器网站目录下的文件进行操作了,比如我们需要对文件进行操作的时候。php5.3默认为 safe_mode_gid=off; (新版弃用) 关闭危险函数 如果打开了安全模式,那么函数禁止是可以不需要的,但是我们为了安全还是考虑进去。比如,我们觉得不希望执行包括 system() 等在那的能够执行命令的php函数,或者能够查看php信息的 phpinfo() 等函数,那么我们就可以禁止他们,方法如下: conf disable_functions = system,passthru,exec,shell_exec,popen,phpinfo 如果你要禁止任何文件和目录的操作,那么可以关闭很多文件操作。 conf disable_functions = chdir,chroot,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy,mkdir,rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown 以上只列出部分不叫常用的文件处理函数,你也可以把上面执行命令函数和这个函数结合,就能够地址大部分的phpshell了。该参数默认为 disable_functions=....

 ·  · 

PHP安装错误记录

编译错误 错误:同时指定了fpm与aspxs2方式错误 bash 1 2 You've configured multiple SAPIs to be build.You can build only one SAPI module and CLI binary at the same time 原因:导致的原因是我的配置参数中同时使用了–enable-fpm 与–with-apxs2,因此编译的时候出错了,去掉其中的任意一个参数编译成功。 系统缺少libtool bash 1 make ***[libphp5.la] Error 1 解决方法:在编译PHP版本时,产生错误 make ***[libphp5.la] Error 1 错误原因:系统缺少libtool 解决办法:yum install libtool-ltdl-devel make过程错误 make: *** [sapi/cli/php] Error 1 原因:在 「./configure 」 沒抓好一些环境变数值。错误发生点在建立「-o sapi/cli/php」是出错,没給到要 link 的 iconv 库参数。 报错提示: bash 1 2 3 4 5 6 7 8 9 libiconv.so.2: cannot open shared object file: No such file or directory mak /root/tools/php-7....

 ·  · 

编译安装PHP

下载PHP 台湾镜像站:http://ftp.ntu.edu.tw/php/distributions/ 搜狐镜像站:http://mirrors.sohu.com/php/ 阿里镜像:http://mirrors.aliyun.com/ 官网:http://php.net/downloads.php 检查PHP所需的lib库 bash 1 2 3 4 5 6 7 8 9 10 11 rpm -qa \ zlib-devel \ libxml2-devel \ libjpeg-devel \ libjpeg-turbo-devel \ libiconv-devel \ freetype-devel \ libpng-devel \ gd-devel \ libcurl-devel \ libxslt-devel 提示:libjpeg-turbo-devel是早期libjpeg-devel的新名字,libcurl-devel是早期curl的新名字。 每个lib一般都会存在对应的以“-devel”命名的包,安装lib对应的-devel包后,对应的lib包就会自动安装好,例如安装gd-devel时就会安装gd。 这些lib库不是必须安装的,但是目前的企业环境下一般都需要安装。否则,PHP程序运行时会出现问题,例如验证码无法显示等。 执行下面命令安装相关的lib软件包: bash 1 2 3 4 5 6 7 8 9 10 11 12 13 yum install -y \ zlib-devel \ libxml2-devel \ libjpeg-devel \ libjpeg-turbo-devel \ freetype-devel \ libpng-devel \ gd-devel \ curl-devel \ libxslt-devel \ bzip2-devel \ gmp-devel \ readline-devel 提示:从安装上看,仅有libiconv-devel这个包没有安装,因为默认的yum源没有此包。可以一个一个地yum安装或通过源文件手工编译安装(这样效率慢)...

 ·  · 

配置PHP插件

PHP缓存加速器介绍 操作码介绍及缓存原理 当客户端请求一个PHP程序时,服务器的PHP引擎会解析该PHP程序,并将其编译为特定的操作码(Operate Code,简称opcode)文件,该文件是执行PHP代码后的一种二进制表示形式。默认情况下,这个编译好的操作码文件由PHP引擎执行后丢弃。而操作码缓存(Opcode Cache)的原理就是将编译后的操作码保存下来,并放到共享内存里,以便在下一次调用该PHP页面时重用它,避免了相同代码的重复编译,节省了PHP引擎重复编译的时间,降低了服务器负载,同时减少了CPU和内存开销。 PHP缓存加速软件介绍 为了提高PHP引擎的高并发访问及执行速度,产生了一系列PHP缓存加速软件。这些软件设计的目的就是缓存前文提到的PHP引擎解析过的操作码文件,以便在指定时间内有相同的PHP程序请求访问时,不再需要重复解析编译,而是直接调用缓存中的PHP操作码文件,这样就提高了动态Web服务的处理速度,从而提升了用户访问企业网站的整体体验。 LAMP环境PHP缓存加速器的原理 下面简单介绍Apache环境的PHP缓存加速器原理。 在LAMP环境中,Apache服务是使用libphp5.so响应处理PHP程序请求的,整个流程大概如下: Apache接收客户的PHP程序请求,并根据规则过滤之。 Apache将PHP程序请求传递给PHP处理模块libphp5.so。 PHP引擎定位磁盘上的PHP文件,并将其加载到内存中解析。 PHP处理模块libphp5.so将PHP源代码编译成为opcode。 PHP处理模块libphp5.so执行opcode,然后把opcode缓存起来。 Apache接收客户端新的PHP程序请求,PHP引擎直接读取缓存执行opcode文件,并将结果返回。在这一次任务中,就无第4步的编译解 析了,从而提升了PHP编译解析效率。 PHP缓存加速器解决的是上述第5步的问题,默认情况下PHP会将opcode内容执行后丢弃,这里却通过PHP缓存加速软件,将opcode内容缓存了下来,目的是当有重复请求时,不需要再重复编译解析PHP程序代码,因为在高并发高访问量的网站上,大量的重复编译会消耗很多的系统资源和时间,而这也就会成为瓶颈,既影响了处理速度,又加重了服务器的负载,为了解决此问题,PHP缓存加速器就这样诞生了。 图4-1是LAMP环境下PHP请求及操作码缓存过程的原理示意图 LNMP环境PHP缓存加速器的原理详解 在LNMP环境中,PHP引擎不再使用libphp5.so模块了,而是启动了独立的FCGI即php-fpm进程,由它监听来自Nginx的PHP程序请求,并交给PHP引擎解析处理,整个执行流程大概如下: PHP缓存加速器软件种类及选择建议 PHP缓存加速器软件常见的种类有XCache、eAccelerator、APC(Alternative PHP Cache),ZendOpcache等,那么,在企业环境我们要如何选择PHP缓存加速器软件呢? 事实上,任选其一即可,没必要都安装上,都安装也可能会发生冲突。总的建议就是根据企业的业务需求及选择前的压力测试结果,或者根据个人的经验偏好选择。不过,老男孩建议首选XCache,其次是eAccelerator,如果想尝新,可以选择ZendOpcache。 首选XCache的原因如下: 经过测试,XCache效率更高、速度更快。 XCache软件开发社区更活跃,最新版2014年底发布。 支持更高版本的PHP,例如PHP 5.5、PHP 5.6。 次选eAccelerator的原因如下: 安装及配置参数更简单,加速效果也不错。 文档资料较多,但官方对软件的更新很慢,社区不活跃。 仅适合PHP版本5.4以下的程序。 选择ZendOpcache的原因如下: 是PHP官方研发的新一代缓存加速软件,以后的发展潜力可能会很好,PHP 5.5以前的版本可以通过ZendOpcache软件以插件扩展的方式安装,从PHP 5.5版本开始已经整合到PHP软件里了,编译时只需指定一个参数即可,例如:–enable-opcache。 ZendOpcache可能是未来的缓存加速首选,现在的稳定性还有待检验,小规模环境下PHP 5以前的版本可以通过插件式安装使用,PHP 5以上的版本可以直接指定参数编译使用。若可以忍受ZendOpcache的各种未知问题的话,也可以尝试使用。 安装PHP缓存加速器扩展 安装PHP eAccelerator缓存加速模块 eAccelerator缓存加速插件说明 eAccelerator是一个免费的、开放源代码的PHP加速、优化及缓存的扩展插件软件,它可以缓存PHP程序编译后的中间代码文件(opcode)、session数据等,降低PHP程序在编译解析时对服务器的性能开销。eAccelerator还可以加快PHP程序的执行速度,降低服务器负载压力,使PHP程序代码执行效率提高1~10倍。 eAccelerator会把编译好的PHP程序存放在共享内存里,然后每次从内存里调用执行,可以设定把一些不适合放在内存里缓存的编译结果存储到磁盘上,默认情况下,磁盘和内存缓存都会被eAccelerator使用。 eAccelerator的最新版为0.9.6.1,支持的PHP最新版本为PHP 5.3及以前5系列的版本。 早期的0.9.5版本支持PHP 4和PHP 5.2以前的版本。 eAccelerator下载地址为:https://github.com/eaccelerator/eaccelerator/downloads。 eAccelerator插件安装过程 具体的安装命令集如下: bash 1 2 /app/php/bin/phpize ./configure --enable-eaccelerator=shared --with-php-config=/app/php/bin/php-config 安装PHP XCache缓存加速模块 XCache缓存加速插件说明 XCache是一个开源的、又快又稳定的PHP opcode缓存器/优化器,其项目leader曾经是Lighttpd(和Nginx类似的高速Web服务软件)的开发成员之一。XCache把PHP程序编译后的数据(opcode)缓存到共享内存里,避免相同的程序重复编译。用户请求相同的PHP程序时,可以直接使用缓存中已编译好的数据,从而提高PHP的访问速度,通常可以提升2~5倍,并大幅降低服务器负载开销。 很多公司使用XCache,它已经能在大流量/高负载的生产环境中稳定运行,与同类型的opcode缓存器相比在各个方面都更胜一筹,例如:社区活跃、快速开发、能够快速跟进PHP的版本更新等。 当前稳定版本为3....

 ·  · 

配置apache httpd支持php

默认生成 bash 1 2 3 4 5 6 7 $ grep libphp5 /app/apache/conf/httpd.conf LoadModule php5_module modules/libphp5.so $ ll /app/apache/modules/ 总用量 29620 -rw-r--r--. 1 root root 9115 4月 8 03:02 httpd.exp -rwxr-xr-x. 1 root root 30316906 4月 21 01:46 libphp5.so 修改httpd配置文件311行 conf AddType application/x-httpd-php .php .phtml AddType application/x-httpd-php-source .phps 更改daemon,更改用户是为了安全考虑 常用的httpd支持php的编译参数 conf ./configure --enable-xcache=shared --with-php-config=/app/php/bin/php-config ./configure --enable-eaccelerator=shared --with-php-config=/app/php/bin/php-config ./configure --with-php-config=/app/php/bin/php-config --with-pdo-mysql=/app/mysql ./configure --with-php-config=/app/php/bin/php-config --with-imagick=/app/imagemag/ sysconfdir 指定php配置文件路径

 ·  ·