php
header("Location: $url"); 不跳转
添加exit();
@ 不显示错误信息(加在函数前)
PHP导出EXCEL乱码
ob_end_clean();
PHP验证码不显示
ob_clean();
文件上传对象为空
修改PHP上传文件大小限制
1. 通常的文件上传,除非文件很小.就像一个5M的文件,极可能要超过一分钟才能上传完.
但在php中,默认的该页最久执行时间为 30 秒.就是说超过30秒,该脚本就中止执行.
这就致使出现 没法打开网页的状况.这时咱们能够修改 max_execution_time
在php.ini里查找
max_execution_time
默认是30秒.改成
max_execution_time = 0
0表示没有限制
2. 修改 post_max_size 设定 POST 数据所容许的最大大小。此设定也影响到文件上传。
php默认的post_max_size 为2M.若是 POST 数据尺寸大于 post_max_size $_POST 和 $_FILES superglobals 便会为空.
查找 post_max_size .改成post_max_size = 150M
3. 不少人都会改了第二步.但上传文件时最大仍然为 8M.
为何呢.咱们还要改一个参数upload_max_filesize 表示所上传的文件的最大大小。
查找upload_max_filesize,默认为8M改成
upload_max_filesize = 100M
另外要说明的是,post_max_size 大于 upload_max_filesize 为佳.
nginx下修改 http下添加 client_max_body_size 100m;
PHP默认输出的是HTML代码,如何转换成效果输出?
用html_entity_decode()处理一下:
discuz更换域名头像不显示
进入后台->站长->Ucneter设置,在“UCenter 访问地址”,将就域名替换成新的域名便可;
进过上面的步骤,图片依旧么有出来,那么更改如下/config/config_ucenter.php文件,将旧域名换成新域名便可
APP对接微信支付,二次签名,APP返回-1
统一下单接口返回正常的prepay_id,再按签名规范从新生成签名后,将数据传输给APP。参与签名的字段名为appId,partnerId,prepayId,nonceStr,timeStamp,package。注意:package的值格式为Sign=WXPay
所有改为小写
json_decode函数处理json返回值是NULL
可使用使用json_last_error()函数获取到的返回值来帮助咱们判断出问题的缘由。
其中若是提示错误JSON_ERROR_SYNTAX(Syntax error),表示json串格式错误。
能够经过如下几个方式排错:
1. json字符串必须以双引号包含 $output = str_replace(",Bf$output);
2. json字符串必须是utf8编码 $output = iconv('gbk', 'utf8', $output);
3. 不能有多余的逗号如:[1,2,]
用正则替换掉,preg_replace(_/,\s*([\]}])/m,,*$1,,$output);
模拟php curl向远程服务器上传文件
header('content-type:text/html;charset=utf8');
$ch = curl_init();
//加@符号curl就会把它当成是文件上传处理
$data = array('img'=>'@'. dirname(__FILE__).'/img/1.jpg');
curl_setopt($ch,CURLOPT_URL,"http://localhost:8088/curl/get_img.php");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
$result = curl_exec($ch);
curl_close($ch);
echo json_decode($result);
掌上论坛客户端宣传页出现乱码的解决方法
一、执行下面的sql语句(若是表前缀不是默认的请自行更改)
- UPDATE `pre_common_plugin` SET `modules` = 'a:4:{i:0;a:10:{s:4:"name";s:6:"mobile";s:4:"menu";s:0:"";s:3:"url";s:0:"";s:4:"type";s:2:"28";s:7:"adminid";s:1:"0";s:12:"displayorder";s:1:"0";s:8:"navtitle";s:0:"";s:7:"navicon";s:0:"";s:10:"navsubname";s:0:"";s:9:"navsuburl";s:0:"";}i:1;a:10:{s:4:"name";s:6:"mobile";s:4:"menu";s:0:"";s:3:"url";s:0:"";s:4:"type";s:2:"11";s:7:"adminid";s:1:"0";s:12:"displayorder";s:1:"0";s:8:"navtitle";s:0:"";s:7:"navicon";s:0:"";s:10:"navsubname";s:0:"";s:9:"navsuburl";s:0:"";}s:6:"system";i:2;s:5:"extra";a:2:{s:11:"installtype";s:10:"langexists";i:1;}}',
- `version` = '1.03' WHERE `pre_common_plugin`.`identifier` ='mobile';
复制代码
二、更新缓存
广告图片上传失败:浏览器插件屏蔽
报错:No input file specified
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] index.php后加一?
PHP redis扩展安装32位的
七牛SDK报错 ucwords() expects exactly 1 parameter, 2 given
// $kv[0] = ucwords($kv[0], '-');
$kv[0] = ucwords($kv[0]);
PHP5.6下会产生以下警告
Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the
php://input stream instead. in Unknown on line 0
Warning: Cannot modify header information - headers already sent in Unknown on line 0
切换PHP5.5
PHP编译扩展
./configure --prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/etc/ --with-mysql=/phpstudy/mysql --with-apxs2=/phpstudy/server/httpd/bin/apxs --enable-mbstring --with-curl --enable-fpm --enable-mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql-sock=/phpstudy/data/mysql.sock --with-mcrypt=/usr/local/libmcrypt --enable-sockets --with-gd --enable-gd-native-ttf --with-freetype-dir=/usr/local/freetype --with-jpeg-dir=/usr/lib/libjpeg.6 --enable-exif
/usr/bin/env: php: No such file or directory解决方法
Linux CentOS系统上安装完php和MySQL后,为了使用方便,须要将php和mysql命令加到系统命令中,若是在没有添加到环境变量以前,执行“php -v”命令查看当前php版本信息时时,则会提示命令不存在的错误,下面咱们详细介绍一下在linux下将php和mysql加入到环境变量中的方法(假设php和mysql分别安装在/usr/local/webserver/php/和/usr/local/webserver/mysql/中)。
方法一:直接运行命令export PATH=$PATH:/usr/local/php/bin 和 export PATH=$PATH:/usr/local/mysql/bin
使用这种方法,只会对当前会话有效,也就是说每当登出或注销系统之后,PATH 设置就会失效,只是临时生效。
方法二:执行vi ~/.bash_profile修改文件中PATH一行,将/usr/local/php/bin 和 /usr/local/mysql/bin 加入到PATH=$PATH:$HOME/bin一行以后
这种方法只对当前登陆用户生效
方法三:修改/etc/profile文件使其永久性生效,并对全部系统用户生效,在文件末尾加上以下两行代码
PATH=$PATH:/usr/local/webserver/php/bin:/usr/local/mysql/bin
export PATH
最后:执行 命令source /etc/profile或 执行点命令 ./profile使其修改生效,执行完可经过echo $PATH命令查看是否添加成功。
php解析不了百度地图api返回的json
除掉callback参数
PHPExcel在PHP7中没法导出的解决方法
错误语法致使:打开PHPExcel\Calculation\Functions.php文件,删除掉581行的break便可。
PHP Fatal error: Call to undefined function pcntl_fork()
重新编译php ./configure --enable-pcntl
php 7 安装多进程扩展 pcntl
将 phpize 变成系统命令,使用ln 方式,命令为:
ln -s /usr/local/php7/bin/phpize /usr/bin/phpize
第二步: 在 /soft/PHP-7.1.1/ext/pcntl 目录下执行 phpize 命令,生成编译文件
./configure --with-php-config=/usr/local/php7/bin/php-config
make && make install
$ vim /etc/php/7.0/php.ini
extension=pcntl.so
解决Call to undefined function imagettftext()方法
首先安装 FreeType, 我这里安装的是2.4.0:
wget http://download.savannah.gnu.org/releases/freetype/freetype-2.4.0.tar.bz2
tar -jxf freetype-2.4.0.tar.bz2
cd freetype-2.4.0
./configure --prefix=/usr/local/freetype
make && make install
第一种是直接编译php,在php configure 编译选项中加上
--with-freetype-dir=/usr/local/freetype
第二种方案比较简单些,既然是GD库的扩展有问题,那么直接把gd库的扩展从新编译,为它指定freetype的路径就行了。如下假设 {php_source_dir} 为你下载的php源码的目录, {php_install_dir}
cd {php_source_dir}/ext/gd
phpize
./configure --with-freetype-dir=/usr/local/freetype --with-php-config={php_install_dir}/bin/php-config
make && make install
$ vim /etc/php/7.0/php.ini
extension=gd.so
配置PHP支持socket扩展
cd /usr/local/php/ext/sockets/
执行phpize工具,执行后,能够看到目录下生成了对应的configure文件
/usr/local/php/bin/phpize
如今就能够经过configure来配置,执行下面的命令:
./configure --prefix=/usr/local/php --with-php-config=/usr/local/php/bin/php-config --enable-sockets
make && make install
执行以后,能够看到下面的输出:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613
第一个就是扩展模块的生成目录,能够在该目录下看到对应的sockets.so文件
$ vim /etc/php/7.0/php.ini
extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/sockets.so"
PHP7安装Redis扩展
git clone https://github.com/phpredis/phpredis.git
$ cd phpredis
$ git checkout php7
$ phpize
$ ./configure
$ make && make install
$ vim /etc/php/7.0/php.ini
extension=redis.so
安装memcached扩展
/phpstudy/server/php/lib/php/extensions/no-debug-non-zts-20121212/
memcache.so
$ vim /etc/php/7.0/php.ini
extension=memcache.so
PHP的内存限制 Allowed memory size of 134217728 bytes exhausted
两种方法解决
一、修改php.ini
memory_limit = 128
这种方法须要重启服务器,很显然,此方法对虚拟机有限制。
二、经过ini_set函数修改配置选项值
ini_set ('memory_limit', '128M')
php-fpm重启
/etc/init.d/php-fpm restart
Workman启动失败的解决方法 stream_socket_server() has been disabled for security reasons
Remove the stream_socket_server string from the disable_functions at php.ini* file
curl: (60) SSL certificate problem: unable to get local issuer certificate
1. 下载 CA 证书
你能够从 http://curl.haxx.se/ca/cacert.pem 下载 或者 使用微信官方提供的证书中的 CA 证书 rootca.pem 也是一样的效果。
2. 在 php.ini 中配置 CA 证书
只须要将上面下载好的 CA 证书放置到您的服务器上某个位置,而后修改 php.ini 的 curl.cainfo 为该路径(绝对路径!),重启 php-fpm 服务便可。
curl.cainfo = /path/to/downloaded/cacert.pem
该网页没法正常运做 目前没法处理此请求HTTP ERROR 500?
display_errors = On
display_startup_errors = On
用array_walk_recursive()函数就很是灵活,能够把任意维度的数组转换成一维数组。
$result = [];
array_walk_recursive($user, function($value) use (&$result) {
array_push($result, $value);
});
nginx php-fpm中启用慢日志配置(用于检测执行较慢的PHP脚本)
hp-fpm.conf
request_slowlog_timeout =0表示关闭慢日志输出。
当request_slowlog_timeout 设为一个具体秒时request_slowlog_timeout =5,表示若是哪一个脚本执行时间大于5秒,会记录这个脚本到慢日志文件中
慢日志文件位置默认在php的安装目录下的log文件夹中,能够经过修改slowlog =/var/log/slow.log参数来指定。
过滤微信昵称中的表情(不过滤 HTML 符号)
function filterNickname($nickname)
{
$nickname = preg_replace('/[\x{1F600}-\x{1F64F}]/u', '', $nickname);
$nickname = preg_replace('/[\x{1F300}-\x{1F5FF}]/u', '', $nickname);
$nickname = preg_replace('/[\x{1F680}-\x{1F6FF}]/u', '', $nickname);
$nickname = preg_replace('/[\x{2600}-\x{26FF}]/u', '', $nickname);
$nickname = preg_replace('/[\x{2700}-\x{27BF}]/u', '', $nickname);
$nickname = str_replace(array('"','\''), '', $nickname);
return addslashes(trim($nickname));
}
PHP二维数组(或任意维数组)转换成一维数组的方法汇总
用array_walk_recursive()函数就很是灵活,能够把任意维度的数组转换成一维数组。
$result = [];
array_walk_recursive($user, function($value) use (&$result) {
array_push($result, $value);
});