➜ etc brew install nginx
==> Installing dependencies for nginx: pcre, openssl
==> Installing nginx dependency: pcre
==> Downloading https://homebrew.bintray.com/bottles/pcre-8.38.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring pcre-8.38.el_capitan.bottle.tar.gz
🍺 /usr/local/Cellar/pcre/8.38: 203 files, 5.4M
==> Installing nginx dependency: openssl
...
使用如下php的配置
php-fpm.conf
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
log_level = notice
[www]
listen = /tmp/php-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.max_children = 20
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 20
request_terminate_timeou...
mongodb分页skip+limit分页要先查出所有结果再去跳过,这样如果查询页面越往后效率越低。
如果能够通过查询条件查出每页结果的最后一条记录,在用最后一条记录作为查询条件去查下一页,这样每次都查询页面size条记录,效率子让不会差。
具体代码如下:包含mongodb.class.php, page.class.php, test.php
mongodb.class.php mongodb 操作类
<?php
function show_error($message, $status_code = 500, $heading = 'An Error Was Encountered')
{
echo $message, $status_code,PHP_EOL...
centos源不能安装libmcrypt-devel,由于版权的原因没有自带mcrypt的包
有两种方法解决,一种是使用第三方源,这样还可以使用yum来安装,简单方便,坏处是第三方源多少有中不可靠的感觉。
解决办法一
1、安装第三方yum源
wget http://www.atomicorp.com/installers/atomic
sh ./atomic
2、使用yum命令安装
yum install php-mcrypt libmcrypt libmcrypt-devel
解决办法二、
使用php mcrypt 前必须先安装Libmcrypt
libmcrypt源码安装方法:
cd /usr/local/src
wget http://softlayer.dl.sourcef...
1.判断变量是否存在且不为空,检查post和get变量时使用。
isset()
empty()
2.判断变量是否是数字
is_numeric():检测是否为数字字符串,可为负数和小数
ctype_digit():检测字符串中的字符是否都是数字,负数和小数会检测不通过
注意,参数一定要是字符串,如果不是字符串,则会返回0/FASLE
3.判断变量是否是数组
is_array()
array系列函数
4.采集网页文本
file_get_contents
curl_exec系类函数
5.判断函数是否存在
function_exists
6.输出页面编码
header("Content-type: text/html; charset=utf-8");
7.正则内容匹配
preg_match()
...
一个好的php代码,无论放到windows还是linux,不同版本的php上,都能正确的输出结果,才是一个好代码。
说起来容易的事,做起来并不是很轻松,很多时候写代码都是功能导向,当前环境,要赶时间立马见效果,基本就是怎么方便怎么来了。
但是为了写出一个好的代码和后期减少调试时间,写每一个代码都要斟酌考虑是否能够适应你所能想到的困难,每次解决一个,日积月累下来,你的代码就会伸缩自如了。
相对路径是对于当前代码文件所在文件夹来说。
绝对路径是相对于根文件夹来说。
当代码需要依赖别的文件时,就需要统一代码的包含路径。
...
phpMyAdmin安装前提条件:
* PHP 5.2 or later(包含mysqli、mbstring、mcrypt扩展)
* MySQL 5.0 or later
*可用的浏览器
下载安装包,解压即可使用
wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.0.7/phpMyAdmin-4.0.7-all-languages.tar.gz
tar -zxvf phpMyAdmin-4.0.7-all-languages.tar.gz
mv phpMyAdmin-4.0.7-all-languages phpMyAdmin
123
wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.0.7/php...
一直以来php处理图片都是以gd为主流,直到近些年Imagick的使用才渐渐变多。
gd通常用来缩放图片,给图片打水印等基本功能,对于复杂效果如制作图标按钮、图倒影等滤镜功能就会力不从心。
尤其对于有多帧图片的动态gif图打水印,如果使用gd像处理普通jpg那样去打水印,打完水印后的图片只剩下第一帧,没有动态效果。
Imagick就能很好的胜任这一点,使得php给动态gif图片打水印成为可能,而且它还具有内存占用小,画质高的特点。
下面是分别使用gd(左图)和imagick(右图)把图片缩放到256px效果,请注意查看图片的细节。
下面我会详细介绍...
nginx是一个web服务器,因此nginx的access日志只有对访问页面的记录,不会有php 的 error log信息。
nginx把对php的请求发给php-fpm fastcgi进程来处理,默认的php-fpm只会输出php-fpm的错误信息,在php-fpm的errors log里也看不到php的errorlog
原因是php-fpm的配置文件php-fpm.conf中默认是关闭worker进程的错误输出,直接把他们重定向到/dev/null,所以我们在nginx的error log 和php-fpm的errorlog都看不到php的错误日志。
调试起来就很痛苦了。解决nginx下php-fpm不记录php错误日志的办法:
1.修改php-fpm.conf中配置 没有则增加
ca...
php5.2以后自带json_decode函数,但是对json文本串的格式要求非常严格。
很可能使用该函数得到的返回值是NULL
可以使用使用json_last_error()函数获取到的返回值来帮助我们判断出问题的原因。
其中如果提示错误JSON_ERROR_SYNTAX(Syntax error),表示json串格式错误。
可以通过以下几个方式排错:
1. json字符串必须以双引号包含
$output = str_replace("'", '"', $output);
2. json字符串必须是utf8编码
$output = iconv('gbk', 'utf8', $output);
3.不能有多余的逗号 如:[1,2,]
用正则替换掉,preg_replace('/,s*([]}])/m', '$1', $...