今天在在本地新建了一个虚拟主机,把以前写好的一个php小网站部署上去,因为以前用的wamp集成环境,所以没有出现这种情况。现在突然发现验证码竟然刷不出来了。
于是便开启了找bug之旅,在网上找了许多办法,最后终于解决了,现在分享如下:
错误一:
出现上面的情况,最基本的一个错误就是你很可能在php里面忘记安装gd模块了。window环境下面只需要在php.ini文件里面找到
;extension=php_gd2.dll
2024年10月05日
今天在在本地新建了一个虚拟主机,把以前写好的一个php小网站部署上去,因为以前用的wamp集成环境,所以没有出现这种情况。现在突然发现验证码竟然刷不出来了。
于是便开启了找bug之旅,在网上找了许多办法,最后终于解决了,现在分享如下:
错误一:
出现上面的情况,最基本的一个错误就是你很可能在php里面忘记安装gd模块了。window环境下面只需要在php.ini文件里面找到
;extension=php_gd2.dll
2024年10月05日
这一期给大家详解下页面静态化
1、静态化页面是什么?
php脚本把这些渲染出来。这个是时候页面是动态显示,前台展示的数据页面是动态,静态化页面就是将这个页面直接转成.html静态的页面,这个时候页面显示的时候不再是动态的,只有等页面只有更新数据的时候才会再次缓存新的数据到静态文件上。简单讲的可以这样子理解。
关于静态化的优点,这边不会在具体的介绍,下次有机会的话给大家讲下为什么要静态化页面,目前可以这样子理解就是静态化后的页面访问速度变得更快,大流量访问减少延迟。
2024年10月05日
今天主要介绍如何用slowquery工具来配置邮件告警,仅供参考。
进入到slowquery/alarm_mail/目录里,修改sendmail.php配置信息。
<?php $get_mail_content = get_include_contents('get_top100_slowsql.php'); function get_include_contents($filename) { if (is_file($filename)) { ob_start(); include $filename; $contents = ob_get_contents(); ob_end_clean(); return $contents; } return false; } $smtpserver = "xx.xxcom";//SMTP服务器 $smtpserverport = 587;//SMTP服务器端口 $smtpusermail = "xx.xx.xx";//SMTP服务器的用户邮箱 $smtpemailto = 'huangwbxx';//发送给谁 $smtpuser = "xunjian";//SMTP服务器的用户帐号,注:部分邮箱只需@前面的用户名 $smtppass = "xxxxx";//SMTP服务器的授权码 $mailtitle='【告警】慢查询报警推送TOP100条,请及时优化.'; $mailcontent='下面的慢查询语句或许会影响到数据库的稳定性和健康性,请您在收到此邮件后及时优化语句或代码。数据库的稳定性需要大家的共同努力,感谢您的配合!<br><br>' .$get_mail_content .'<br>< br>该邮件由slowquery系统自动发出,请勿回复,语句详细执行情况请登录<a href="http://1xx.xx.xx.xx/slowquery/slowquery.php">slowquery系统查看.<br><br>'; system("./sendEmail -f $smtpusermail -t $smtpemailto -s $smtpserver:$smtpserverport -u '$mailtitle' -o message-charset=utf8 -o message-content-type=html -m '$mailcontent' -xu $smtpusermail -xp '$smtppass'"); ?>
2024年10月05日
一、概念
在PHP运行的过程中,可以将会产生输出的函数或操作结果暂时保存在PHP的缓冲区,只有当缓冲区满了、或者PHP运行完毕、或者在必要时候进行输出,才会将数据输出到浏览器,此缓冲数据的区域称为PHP的输出缓冲区(OB)。
二、原理
①使用了缓冲区之后,当执行PHP的时候,如果碰到了echo、print_r之类的会输出数据的代码(实际上许多函数都会产生输出),PHP就会将要输出的数据放到PHP自身的缓冲区,等待输出;
2024年10月05日
hello,大家好呀,我是yangyang,今天给php的朋友分享下关于在自己的tp项目中使用了think-swoole来全面协程化后遇到的关于导出文件输出流的一点小问题
导出报表是非常常见的需求,实现的技术方式有很多,小编不才,先给大家分享一下php我遇到的几种业务场景
2024年10月05日
今天主要介绍如何用slowquery工具来配置邮件告警,仅供参考。
进入到slowquery/alarm_mail/目录里,修改sendmail.php配置信息。
<?php $get_mail_content = get_include_contents('get_top100_slowsql.php'); function get_include_contents($filename) { if (is_file($filename)) { ob_start(); include $filename; $contents = ob_get_contents(); ob_end_clean(); return $contents; } return false; } $smtpserver = "xx.xxcom";//SMTP服务器 $smtpserverport = 587;//SMTP服务器端口 $smtpusermail = "xx.xx.xx";//SMTP服务器的用户邮箱 $smtpemailto = 'huangwbxx';//发送给谁 $smtpuser = "xunjian";//SMTP服务器的用户帐号,注:部分邮箱只需@前面的用户名 $smtppass = "xxxxx";//SMTP服务器的授权码 $mailtitle='【告警】慢查询报警推送TOP100条,请及时优化.'; $mailcontent='下面的慢查询语句或许会影响到数据库的稳定性和健康性,请您在收到此邮件后及时优化语句或代码。数据库的稳定性需要大家的共同努力,感谢您的配合!<br><br>' .$get_mail_content .'<br>< br>该邮件由slowquery系统自动发出,请勿回复,语句详细执行情况请登录<a href="http://1xx.xx.xx.xx/slowquery/slowquery.php">slowquery系统查看.<br><br>'; system("./sendEmail -f $smtpusermail -t $smtpemailto -s $smtpserver:$smtpserverport -u '$mailtitle' -o message-charset=utf8 -o message-content-type=html -m '$mailcontent' -xu $smtpusermail -xp '$smtppass'"); ?>
2024年10月05日
今天客户搬家新服务器之后发现织梦后台验证码不显示
就是这个毛病。经过检查发现他用记事本打开导致。尤其utf8尽量用Dreamweaver notepad++等编辑器编辑配置文件。否则容易bom丢失。
我们用一下方法解决成功
打开include文件夹下vdimgck.php文件(一般是倒数第三个)加入ob_clean() 清除图片生成缓存
2024年10月05日
PHP常用函数,记录下
/**
* UTF-8编码 GBK编码相互转换/(支持数组)
*
* @param array $str 字符串,支持数组传递
* @param string $in_charset 原字符串编码
* @param string $out_charset 输出的字符串编码
* @return array
*/
function array_iconv($str, $in_charset="gbk", $out_charset="utf-8"){
2024年10月05日
/* 图片地址 $obj->url 图片的宽,比如放大或缩小后的图片,如果图片宽本来是100,你把他放大到200,那这里就填200 $obj->largeWidth 图片的高,同上 $obj->largeHeight 新图的宽,比如你把图片从100放大到200,且只要其中的150,那这里就填150 $obj->newWidth 新图的高,同上 $obj->newHeight 新图相对于原图的的水平偏移,注意,这里的原图是指放大或缩小之后的图片, 就拿上面的讲,你的图片是100*200,当是你放大到 200*400, 现在你只要 150*150, 而且你要最中心的位置,即在 200*400 的大小中 在最中间的位置 裁剪 150*150 这时候 $obj->x 就应该是 (200-150)/2 = 25 , $obj->y 就应该是 (400-150)/2 = 125 $obj->x $obj->x */ <?php function clipping($obj){ //输出裁剪图片 $info=getimagesize($obj->url); $w=$info[0]; $h=$info[1]; switch($info[2]){ case 1: $largeImage=imagecreatefromgif($obj->url); break; case 2: $largeImage=imagecreatefromjpeg($obj->url); break; case 3: $largeImage=imagecreatefrompng($obj->url); break; } //创建一张临时图片,图片的width和height是放大或缩小之后的 $tempImage=imagecreatetruecolor($obj->largeWidth,$obj->largeHeight); //把即将要裁剪的图片放进这张临时图片 imagecopyresampled($tempImage,$largeImage,0,0,0,0,$obj->largeWidth,$obj->largeHeight,$w,$h); //销毁原图,因为现在已经有一张临时图片了 imagedestroy($largeImage); //创建一张新图,这张新图就是就要裁剪的大小 $newImage = imagecreatetruecolor($obj->newWidth,$obj->newHeight); // 把临时图片放进裁剪图片,参数已在上面说明了 imagecopyresampled($newImage,$tempImage,0,0,$obj->x,$obj->y,$obj->newWidth,$obj->newHeight,$obj->newWidth,$obj->newHeight); //销毁临时图片 imagedestroy($tempImage); //直接在浏览器输出图片,输出前先执行 ob_clean();不然可能出现输出失败 ob_clean(); switch($info[2]){ case 1: header('Content-Type:image/gif'); imagegif($newImage); break; case 2: header('Content-Type:image/jpeg'); imagejpeg($newImage); break; case 3: header('Content-Type:image/png'); imagepng($newImage); break; } //在浏览器输出之后就可以销毁了 imagedestroy($newImage); } ?>