php的curl函数打开https时候的问题,特别是502问题或者微信的40001获取不到token问题

sslcurl 学习下载点这里

关于php在使用curl打开https情况下,经常出现502错误,那一般是curl函数要设置一些 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

上面的代码供参考。

下面这个图的错误,也是如此
weixin-payment-error

Discuz用户上传头像提示can not write to the data tmp folder。

Discuz用户上传头像提示can not write to the data tmp folder。 142513516573d35eadf807

解决方法:

通过chrome 的F12功能发现,上传图片调用 uc_server/control/user.php里面的函数 onuploadavatar,返回值是 -4,通过查找 -4的来源,

avatar1

得到 getimagesize 函数出错,返回false,

那么写一点调试代码就能看到问题所在了

avatar2

图中红圈是调试语句,根据这个的错误提示,就会发现是apache无权限读取上传的临时文件,根据提示修改apache的配置文件里面的 php_admin_value open_basedir XXXXX
通过注释掉此语句,或者修改到合适的目录使得可以读取上传文件的临时目录就可以解决此问题了。

文件夹空和不含子文件夹的函数php

检查某个文件夹是否是空文件夹,和检查某个文件夹是否不含子文件夹的函数

empptydir-leafdir

function dir_contains_children($dir) {
    $result = false;
    if($dh = opendir($dir)) {
        while(!$result && ($file = readdir($dh)) !== false) {
            $result = $file !== "." && $file !== ".." ;
        }

        closedir($dh);
    }

    return $result;
}

function dir_contains_children_dirs($dir) {
  $result = false;
    if($dh = opendir($dir)) {
       while (!$result && ($file = readdir($dh))) {
         $result = $file !== "." && $file !== ".." && is_dir($dir.'/'.$file);
       }
       closedir($dh);
    }

  return $result;
}

TXT下载

某些php视频网站程序无法截图和转换视频的问题

类似 clip-share ,AVS 一类的php程序,这linux安装环境,也配置好了诸如ffmpeg , 等等工具,可仍然无法转换视频,查看此类问题的方法是这这类php程序的log里找,比如 tmp/logs/XXX.log 等文件,里面的前面几行一般是运行的命令行,当你手动去运行那个命令行语句的时候,就会调试出问题,有时候碰到的情况是,cli 模式的php使用的php.ini 居然和 web 服务器用的并非一个php.ini ,这时候就需要统一双方的差异了。

禁止 某些可写目录执行 php的方法

首先说下分析为啥这个是正确的,
httpd.conf里面 AddType application/x-httpd-php5 .php
并不区分大小写,从而导致 .php .PHP .Php .pHp .phP 都可以正确执行,那么就需要防止这类漏洞,采用apache rewrite方法的时候用 NC 表示不区分大小写匹配 ,F表示forbidden

RewriteRule ^images/.*\.php – [NC,F]

wdlinux 和主机宝 在 php curl https的情况下出现 segmenet fault,可能原因是sqlite 3造成的

Centos 6.5 系统 的sqlite 3 的情况下可能出现此问题
解决方法比较蹊跷,首先定位为sqlite 3的方法是
gdb /path/to/php
>run curl_test.php
出现一堆错误,其中显示出sqlite

Starting program: /a/apps/php-5.2.17/bin/php curl_test.php
[Thread debugging using libthread_db enabled]

Program received signal SIGSEGV, Segmentation fault.
0x00007fffeb461e9c in sqlite3_file_control () from /usr/lib64/libsqlite3.so.0
Missing separate debuginfos, use: debuginfo-install zadmin-2.0.1-0.x86_64

discuz 插件速度慢的查找方法

source/function/function_core.php
的函数 hookscript


foreach($funcs as $hookkey => $hookfuncs) {
foreach($hookfuncs as $hookfunc) {
//起始时间
$a = time()

……

//结束时间
$b = time()-$a;
echo “==========”.$b.print_r($hookfuncs,true);
}
}

通过查看===== 标记后面$b值,如果$b过大,就查看$hookfuncs 是什么造成的,从而查出哪个插件,解决方法就是了可以临时跳过那个插件

if($hookfunc[0]==”cloudsearch”) continue;
上面的cloudsearch 就是 $hookfuncs[0] 查出来的

//PS 上面的方法不一定好使,可以用下面的

测试方法 用你的测试访问两次某个地址

可以通过改变某个参数, user-agent 等来对比生成的 zjpro.txt 文件的不一致性,从而确定哪一个plungin的问题!!!!

比如

curl -v -A “百度spider的UA” http://URI

curl -v -A “正常IE的UA” http://URI

对比生成的两次zjpro.txt 文件

 

阿里云的主机宝 php5.2 出现 502错误原因总结

  • sqlite 3  可能导致 php 5.2 版本出现 502错误 。解决方法:把/usr/lib/libsqlite-3 移走
  • openssl问题可能导致,解决方法,安装openssl-devel 然后重新编译 php ,附录为主机宝官方给的ssl方面的解决方法(未实验, 可能X86_64位需要修改)

============1======================
wget dl2.admin5.com/php/curl-7.37.1.tar.gz
tar zxvf curl-7.37.1.tar.gz
cd curl-7.37.1
./configure –prefix=/usr/local/curl
make && make install
cd ..
rm -rf curl-7.37.1*
============2======================
cd /a/apps/
wget dl2.admin5.com/php/php-5.2.17-have.tar.gz
rm -rf php-5.2.17
tar zxvf php-5.2.17-have.tar.gz
rm -rf php-5.2.17-have.tar.gz

===========3(镜像1.0)==============
cd /root
wget dl2.admin5.com/php/openssl-1.0.1h.tar.gz
tar zxvf openssl-1.0.1h.tar.gz
cd openssl-1.0.1h
./config –prefix=/usr/local/ssl shared zlib
make && make install
mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/include/openssl /usr/include/openssl.old
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
echo “/usr/local/ssl/lib” >> /etc/ld.so.conf
ldconfig -v
cd ..
rm -rf openssl-1.0.1h*
===========4=======================
killall -9 php-cgi
killall -9 php-cgi
service php-fpm start
service zadmin start

zhujibao

CentOS 下 PHP 从 5.1.x升级到5.2.x

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

一个还算漂亮的语法高亮的工具 prettify

从这里下载
https://code.google.com/p/google-code-prettify/
下载后,有用的文件是src 和 style 目录
用法

如下
<head>
<link rel="stylesheet" type="text/css" href="sunburst.css">
<script type="text/javascript" src="prettify.js" ></script>
</head>
<body onload="prettyPrint()">
<pre class="prettyprint">
@*你的代码片断*@
</pre>
</body>
参考了 http://www.lidongkui.com/use-prettify-to-highlight-code