1) echo __LINE__.”\r\n”;die();用于命令行
2) echo __LINE__.”<br/>”; 用于网页
3) echo __LINE__.”\r\n”; return “”; 用于跳过剩下的部分
4) php文件最下面的 ?> 不要写
标签归档:php
php将网页转换成图片的方法 PhantomJS
参考
http://www.wdudes.com/capture-screenshot-website-using-php-without-api/
主要是利用 PhantomJS 的截屏功能
php文件改进如下
windows 2008 iis7 iis7.5 里面wordpress配置 php和rewrite伪静态的web.config 文件
利用浏览器控制台(Console)进行PHP Debug
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);
上面的代码供参考。
Discuz用户上传头像提示can not write to the data tmp folder。
Discuz用户上传头像提示can not write to the data tmp folder。
解决方法:
通过chrome 的F12功能发现,上传图片调用 uc_server/control/user.php里面的函数 onuploadavatar,返回值是 -4,通过查找 -4的来源,
得到 getimagesize 函数出错,返回false,
那么写一点调试代码就能看到问题所在了
图中红圈是调试语句,根据这个的错误提示,就会发现是apache无权限读取上传的临时文件,根据提示修改apache的配置文件里面的 php_admin_value open_basedir XXXXX
通过注释掉此语句,或者修改到合适的目录使得可以读取上传文件的临时目录就可以解决此问题了。
php新木马代码的一个例子
文件夹空和不含子文件夹的函数php
检查某个文件夹是否是空文件夹,和检查某个文件夹是否不含子文件夹的函数
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; }
amh的chroot情况下php访问根之外文件的方法
amh 4.2的chroot限制了php访问网站根目录之外文件,用Linux的连接方式失效,
可以采用 mount –bind outdir chroot_inner 的方式来解决!
只允许特定名字php执行的rewrite规则
apache 的这样写
RewriteEngine On
RewriteRule ^(?!index\.php|其他\.php)(.*)\.php$ index.php [L]
nginx的这样写
rewrite ^/(?!index\.php|其他\.php)(.*)\.php$ index.php last;
非线程安全版php不支持zend
http://www.4wei.cn/archives/1001397
fastcgi 模式+非线程安全版本的php 不支持 zend 3.3.3
fastcgi 模式+非线程安全版本的php 不支持 zend 3.3.3
fastcgi 模式+非线程安全版本的php 不支持 zend 3.3.3
重要说三遍
某些php视频网站程序无法截图和转换视频的问题
类似 clip-share ,AVS 一类的php程序,这linux安装环境,也配置好了诸如ffmpeg , 等等工具,可仍然无法转换视频,查看此类问题的方法是这这类php程序的log里找,比如 tmp/logs/XXX.log 等文件,里面的前面几行一般是运行的命令行,当你手动去运行那个命令行语句的时候,就会调试出问题,有时候碰到的情况是,cli 模式的php使用的php.ini 居然和 web 服务器用的并非一个php.ini ,这时候就需要统一双方的差异了。
qq互联的失败可能是php curl ssl 出错
最近碰到一些QQ互联登录的问题,可能是php的curl在https 情况下出现 segment falt 造成,终极原因需要修复php curl ssl,
造成的原因可能是libsqlite
禁止 某些可写目录执行 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
php模拟登陆,手动验证码,备用
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 文件
curl php keep-alive
阿里云的主机宝 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
一句话知识点:apache 的php模块nts 还是ts
apache 用 php_apache2.X.dll 调用php时候用的是 ts 的php版本
比如 LoadModule php5_module “……/php5apache2_2.dll”
就用的 ts版本的php 线程安全版
反之 用 scriptalias 调用 php.exe 或者 php-cgi.exe 的就用nts版本的php
一句话知识点: iis 的网站主目录所在的上级目录权限不能设置的过死
iis 的网站主目录所在的上级目录权限不能设置的过于安全,导致php的 require 失效的,不是父路径问题,就是主目录的父目录权限太死了
php的32和64位系统下的区别,数组键值问题
一个串行化后的字符串,在64位的linux系统下正常反串行化,而在32位系统下无法做到
发现一个问题就是 串行化的 i 类型数据过大,导致在32位系统下超出了整形的最大值.
php 5.3 fastcgi 方式在 ii6 下出现 500错误的解决
发现safedog 可能会的fastcgi 方式的php造成影响,建议关闭 safedog
php的一个简单加密解密代码
参考 http://www.phpernote.com/php-function/376.html
调用方法
$sc=new SysCrypt('http://www.phpsir.com'); $text='QQ733905'; $test1=$sc->encrypt($text); echo '原文:',$text; echo ' '; echo '密文:',$test1; echo " "; echo '解密:',$sc->decrypt($test1);
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
php连接mssql出现连接有时出错有时成功
一台php + mssql 2005
经常 mssql_connect 出现时断时续的连接错误
查资料去除 php.ini 里面的 pdo mssql 和 pdo odbc 后重启 iis,
问题解决
php发送header 301的问题
经常见有写php 的 header 是 301,结果出现302的情形
现在查询发现,似乎这样写才是对的
header(“Location: http://someurl.com”,TRUE,301);
也就是说需要在最后加 301的状态码
php在window iis 的莫名问题的测试方法
其实很简单,就一句话,见招拆招
假设php安装在c:\php,在cmd 里面测试php是否有配置问题,
c:\php\php.exe -i
看下是否有一些错误蹦出来
然后调整 php.ini ,把这些错误修正,over
用于检测php文件是否带bom的php脚本
一个还算漂亮的语法高亮的工具 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