遇到过两次php mail无法发送邮件,第一次是没有正确设置hostname,http://devops.webres.wang/2011/10/wordpress-slow-comment-solution/,这次需要设置/etc/php.ini文件里sendmail的路径,设置php sendmail路径方法如下:
打开/etc/php.ini(不一定是这个路径),搜索;sendmail_path = 更改为sendmail_path = /usr/sbin/sendmail -t -i(不一定是这个路径,你可以通过whereis sendmail查找)。之后重启php就OK。
标签:PHP
配置apache以fastcgi运行php
apache默认是用自带的mod_php模块运行php,现在我们介绍使用fastcgi来执行php脚本。先说下fastcgi的优点:
Fastcgi的优点:
安装apache
- wget http://apache.ziply.com//httpd/httpd-2.2.21.tar.gz
- tar xzf httpd-2.2.21.tar.gz
- cd httpd-2.2.21
- ./configure –prefix=/usr/local/apache
- make && make install
安装fastcgi
- wget http://www.fastcgi.com/dist/mod_fastcgi-2.4.6.tar.gz
- tar xzf mod_fastcgi-2.4.6.tar.gz
- cd mod_fastcgi-2.4.6
- cp Makefile.AP2 Makefile
- make top_dir=/usr/local/apache
- make top_dir=/usr/local/apache install
完成之后编辑httpd.conf配置文件,加入fastcgi模块装载代码:
- LoadModule fastcgi_module modules/mod_fastcgi.so
安装php5.2
- wget http://us2.php.net/get/php-5.2.17.tar.gz/from/am.php.net/mirror
- tar xzf php-5.2.17.tar.gz
- cd php-5.2.17
- ./configure –prefix=/usr/local/php –enable-fastcgi –disable-cli
- make && make install
配置apache支持php
编辑httpd.conf文件,加入如下代码:
- ### fastcgi ###
- ScriptAlias /fcgi-bin/ "/usr/local/php/bin/"
- AddHandler php-fastcgi .php
- Action php-fastcgi /fcgi-bin/php-cgi
- AddType application/x-httpd-php .php
- <IfModule mod_fcgid.c>
- AddHandler fcgid-script. .php .fcgi ### 暂时只配置支持.php
- IdleTimeout 300
- ProcessLifeTime 1800
- MaxProcessCount 100
- DefaultMinClassProcessCount 3
- DefaultMaxClassProcessCount 8
- IPCConnectTimeout 15
- IPCCommTimeout 300
- MaxRequestsPerProcess 100
- </IfModule>
- ### fastcgi ###
建立虚拟主机可以这样配置:
- <VirtualHost *:80>
- DocumentRoot /usr/local/apache/htdocs
- ServerName localhost
- Options +ExecCGI
- AddHandler fastcgi-script .fcgi
- AddType application/x-httpd-php .php
- Action application/x-httpd-php /fcgi-bin/php-cgi
- <Directory /usr/local/apache/htdocs>
- Options Indexes ExecCGI
- Order allow,deny
- allow from all
- </Directory>
- </VirtualHost>
详细的fastcgi指令配置请看:http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html
Linux安装php扩展memcache
php扩展memcache的作用是为了支持memcached数据库缓存服务器,下面是安装方法。
1、下载并解压memcache文件
- wget -c http://pecl.php.net/get/memcache-3.0.6.tgz
- tar xzvf memcache-3.0.6.tgz
- cd memcache-3.0.6
2、执行phpize扩展安装程序,假设phpzie的路径为/usr/local/php/bin/phpize,具体的路径得根据自己的环境修改。
- /usr/local/php/bin/phpize
3、开始安装扩展memcache
- ./configure –enable-memcache –with-php-config=/usr/local/php/bin/php-config –with-zlib-dir
- make && make install
4、最后修改php.ini文件,在zend之前加入如下代码。
- [memcache]
- extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
- extension=memcache.so
Linux安装PHP加速器Xcache
XCache 是一个又快又稳定的 PHP opcoolcode 缓存器. 经过良好的测试并在大流量/高负载的生产机器上稳定运行. 经过(在 linux 上)测试并支持所有现行 PHP 分支的最新发布版本, 如 PHP_4_3 PHP_4_4 PHP_5_0 PHP_5_1 PHP_5_2 HEAD(6.x), 并支持线程安全/Windows. 与同类 opcoolcode 缓存器相比更胜一筹, 比如能够快速跟进 PHP 版本.下面介绍如何安装配置。
1、安装xcache
- wget http://xcache.lighttpd.net/pub/Releases/1.3.2/xcache-1.3.2.tar.gz
- tar -zxvf xcache-1.3.2.tar.gz
- cd xcache-1.3.2
- phpize
- ./configure –enable-xcache
- make
- make install
2、配置xcache
打开php.ini文件,增加如下代码:
- [xcache-common]
- ; change me – 64 bit php => /usr/lib64/php/modules/xcache.so
- ; 32 bit php => /usr/lib/php/modules/xcache.so
- zend_extension = /usr/lib64/php/modules/xcache.so
- [xcache.admin]
- xcache.admin.auth = On
- xcache.admin.user = "mOo"
- ; xcache.admin.pass = md5($your_password)
- xcache.admin.pass = ""
- [xcache]
- xcache.shm_scheme = "mmap"
- xcache.size = 32M
- xcache.count = 1
- xcache.slots = 8K
- xcache.ttl = 3600
- xcache.gc_interval = 300
- ; Same as aboves but for variable cache
- ; If you don’t know for sure that you need this, you probably don’t
- xcache.var_size = 0M
- xcache.var_count = 1
- xcache.var_slots = 8K
- xcache.var_ttl = 0
- xcache.var_maxttl = 0
- xcache.var_gc_interval = 300
- ; N/A for /dev/zero
- xcache.readonly_protection = Off
- xcache.mmap_path = "/dev/zero"
- xcache.cacher = On
- xcache.stat = On
注意修改zend_extension = /usr/lib64/php/modules/xcache.so为正确的路径。
详情的配置说明:http://xcache.lighttpd.net/wiki/XcacheIni
eAccelerator 配置参数详解
- eaccelerator.shm_size="32"
eAccelerator 可以使用的共享内存的数量 (以兆为单位) . “0” 是指操作系统的默认值. 默认值是 “0”.可根据服务器的实际情况来调整,16,32,64,128都是可以的。
- eaccelerator.cache_dir="/home/php/tmp"
这个目录是给磁盘缓存使用. eAccelerator 在这里储存预先编译好的代码, 进程数据, 内容以及用户的自定义内容. 同样的数据也能被储存在共享内存中 (这样可以提高访问速度). 默认的设置是 “/tmp/eaccelerator”.
- eaccelerator.enable="1"
开启或关闭 eAccelerator。”1″ 为开启,”0″ 为关闭。默认值为 “1”。
- eaccelerator.optimizer="1"
启或关闭内部优化器,可以提升代码执行速度。”1″ 为开启,”0″ 为关闭。默认值为 “1”。
eaccelerator.check_mtime=”1″
打开或者关闭 PHP 的文件修改检查. “1” 是指打开, “0” 是指关闭. 如果您在修改以后重新编译 PHP 的文件,那么您应当设置为 “1”. 默认值是 “1”.
- eaccelerator.debug="0"
开启或关闭调试日志记录。”1″ 为开启,”0″ 为关闭。默认值为 “0”。会将缓存命中得记录写入日志。
- eaccelerator.filter=""
判断哪些 PHP 文件必须缓存。您可以指定缓存和不缓存的文件类型(如 “*.php *.phtml”等)
如果参数以 “!” 开头,则匹配这些参数的文件被忽略缓存。默认值为 “”,即,所有 PHP 文件都将被缓存。
- eaccelerator.shm_max="0"
当使用 ” eaccelerator_put() ” 函数时禁止其向共享内存中存储过大的文件。该参数指定允许存储的最大值,单位:字节 (10240, 10K, 1M)。”0″ 为不限制。默认值为 “0”。
- eaccelerator.shm_ttl="0"
当 eAccelerator 获取新脚本的共享内存大小失败时,它将从共享内存中删除所有在最后 “shm_ttl” 秒内没有存取的脚本缓存。默认值为 “0”,即:不从共享内春中删除任何缓存文件。
- eaccelerator.shm_prune_period="0"
当 eAccelerator 获取新脚本的共享内存大小失败时,他将试图从共享内存中删除早于”shm_prune_period” 秒的缓存脚本。默认值为 “0”,即:不从共享内春中删除任何缓存文件。
- eaccelerator.shm_only="0"
允许或禁止将已编译脚本缓存在磁盘上。该选项对 session 数据和内容缓存无效。默认值为 “0”,即:使用磁盘和共享内存进行缓存。
- eaccelerator.compress="1"
允许或禁止压缩内容缓存。默认值为 “1”,即:允许压缩。
- eaccelerator.compress_level="9"
指定内容缓存的压缩等级。默认值为 “9”,为最高等级。
- eaccelerator.keys = "disk_only"
- eaccelerator.session = "disk_only"
- eaccelerator.content = "disk_only"
设置内容缓存的存放的地方,可以设置为:
shm_and_disk 在共享缓存和硬盘(默认值)
shm 默认存在共享内存,如果共享内存已满或大小超过 “eaccelerator.shm_max” 的值,就存到硬盘
shm_only 只存放在共享内存
disk_only 只存放在硬盘
none 不缓存数据
- eaccelerator.allowed_admin_path = "/var/www/html/21andy.com/eaccelerator"
这是控制面板的地址
安装包里有个control.php,你把它复制到网站的任意目录,可以用它查看和管理,这个必须指定,否则查看缓存内容的时候会出错
最后,来看一下我的 eAccelerator 设置
- ; eaccelerator
- [eaccelerator]
- zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
- eaccelerator.shm_size="128"
- eaccelerator.cache_dir="/tmp/eaccelerator"
- eaccelerator.enable="1"
- eaccelerator.optimizer="1"
- eaccelerator.check_mtime="1"
- eaccelerator.debug="0"
- eaccelerator.filter=""
- eaccelerator.shm_max="0"
- eaccelerator.shm_ttl="3600"
- eaccelerator.shm_prune_period="3600"
- eaccelerator.shm_only="0"
- eaccelerator.compress="1"
- eaccelerator.compress_level="9"
- eaccelerator.keys = "disk_only"
- eaccelerator.sessions = "disk_only"
- eaccelerator.content = "disk_only"
- eaccelerator.allowed_admin_path = "/var/www/html/21andy.com/eaccelerator"
另外,再说下 eAccelerator 的安装
- # wget http://bart.eaccelerator.net/source/0.9.6/eaccelerator-0.9.6.tar.bz2
- # tar -jxvf eaccelerator-0.9.6.tar.bz2
- # cd eaccelerator-0.9.6
- # /usr/local/php/bin/phpize
- # ./configure –enable-eaccelerator=shared –with-php-config=/usr/local/php/bin/php-config
- # make && make install
Linux php.ini的安全优化配置
(1) PHP函数禁用找到
- disable_functions =
该选项可以设置哪些PHP函数是禁止使用的,PHP中有一些函数的风险性还是相当大的,可以直接执行一些CentOS系统级脚本命令,如果允许这些函数执行,当PHP 程序出现漏洞时,损失是非常严重的!以下我们给出推荐的禁用函数设置:
- disable_functions = phpinfo,passthru,exec,system,popen,chroot,escapeshellcmd,escapeshellarg,shell_exec,proc_open,proc_get_status
需注意:如果您的服务器中含有一些CentOS系统状态检测的PHP程序,则不要禁用shell_exec,proc_open,proc_get_status等函数。
(2) PHP脚本执行时间找到
- max_execution_time = 30
该选项设定PHP程序的最大执行时间,如果一个PHP脚本被请求,且该PHP脚本在max_execution_time时间内没能执行完毕,则PHP不再继续执行,直接给客户端返回超时错误。没有特殊需要该选项可保持默认设置30秒,如果您的PHP脚本确实需要长执行时间则可以适当增大该时间设置。
(3) PHP脚本处理内存占用找到
- memory_limit = 8M
该选项指定PHP脚本处理所能占用的最大内存,默认为8MB,如果您的服务器内存为1GB以上,则该选项可以设置为12MB以获得更快的PHP脚本处理效率。
(4) PHP全局函数声明找到
- register_globals = Off
网络上很多关于PHP设置的文章都推荐将该选项设置为On,其实这是一种及其危险的设置方法,很可能引起严重的安全性问题。如果没有特殊的需要,强烈推荐保留默认设置!
(5) PHP上传文件大小限制找到
- upload_max_filesize = 2M
该选项设定PHP所能允许最大上传文件大小,默认为2MB。根据实际应用需求,可以适当增大该设置。
(6) 几个地方的检查
查找:display_errors
如果是On的话改成Off
查找:magic_quotes_gpc
如果是Off的话改成On
CentOS-6 64位安装PHP5.2出现error: libjpeg.(a|so),error: libpng.(a|so) not found
昨天测试lamp一键安装脚本时,出现error: libjpeg.(a|so),error: libpng.(a|so) not found等两个错误,根据错误提示,是找不到libjpeg和libpng库文件的意思,找了一下,发现这两个文件在目录/usr/lib64下,而php并不查找这个位置,而是去/usr/lib搜索库文件,所以只能建立两个软链接。
- ln -s /usr/lib64/libjpeg.so /usr/lib/libjpeg.so
- ln -s /usr/lib64/libpng.so /usr/lib/libpng.so
同是64位,CentOS-5就没有这种问题。
Linux php安装zip扩展
- # wget http://pecl.php.net/get/zip-1.10.2.tgz
- # tar zxvf zip-1.10.2.tgz
- # cd zip-1.10.2
- # /usr/local/php/bin/phpize
运行了这个zip目录下会自动生成几个文件,其中包括configure
- # ./configure –with-php-config=/usr/local/php/bin/php-config
- # make
- # make install
安装完成后修改一下php.ini
- # vim /usr/local/php/etc/php.ini
加入
- extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/zip.so
之后重启apache。
CentOS 5.x 系统下使用yum 升级php到5.2.x 最方便方法
WordPress需要PHP的版本5.2x以上,如果你的PHP是yum安装的,很有可能PHP的版本是5.1x,通过以下方法升级PHP到5.2比较方便,现推荐给大家。
- # rpm –import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
- # vi /etc/yum.repos.d/CentOS-Base.repo
增加下面信息
- [utterramblings]
- name=Jason’s Utter Ramblings Repo
- baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
- enabled=1
- gpgcheck=1
- gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
执行命令,自动升级。
- yum update php -y
- yum install libmcrypt -y
PHP计划任务:如何使用Linux的Crontab执行PHP脚本
我们的PHP程序有时候需要定时执行,我们可以使用ignore_user_abort函数或是在页面放置js让用户帮我们实现。但这两种方法都不太可靠,不稳定。我们可以借助Linux的Crontab工具来稳定可靠地触发PHP执行任务。
下面介绍Crontab的两种方法。
继续阅读PHP计划任务:如何使用Linux的Crontab执行PHP脚本