php

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);
掌上论坛客户端宣传页出现乱码的解决方法
1、执行下面的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';
复制代码
2、更新缓存
广告图片上传失败:浏览器插件屏蔽
报错: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
两种方法解决
1、修改php.ini
memory_limit = 128
这种方法需要重启服务器,很显然,此方法对虚拟机有限制。
2、通过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);
});

posted on 2018-10-12 10:47  阿释密达  阅读(195)  评论(0编辑  收藏  举报

导航