cURL error 60: SSL certificate problem: unable to get local issuer certifica 解决
[ 2022-04-27 17:00:32 | 作者: admin ]
今天在做本地环境开发阿里云短信验证时报错:cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)
Windows版本
1.到 https://curl.haxx.se/ca/cacert.pem 下载证书文件 cacert.pem,将其保存到 PHP 安装路径下。
2.编辑 php.ini 文件,删除 curl.cainfo 配置项前的分号注释符(;),值设置为保存的证书文件 cacert.pem 的绝对路径。
3.重启依赖 PHP 的服务。
...
阅读全文…
Windows版本
1.到 https://curl.haxx.se/ca/cacert.pem 下载证书文件 cacert.pem,将其保存到 PHP 安装路径下。
2.编辑 php.ini 文件,删除 curl.cainfo 配置项前的分号注释符(;),值设置为保存的证书文件 cacert.pem 的绝对路径。
3.重启依赖 PHP 的服务。
...
阅读全文…
php不同版本htmlspecialchars函数过滤GBK编码时中文为空
[ 2021-12-16 14:33:29 | 作者: admin ]
PHP 5.4.3 环境中测试了一个在 PHP 5.2 环境下运行正常的程序,却发现本应正常提交一个中文字符串到数据库的代码却提交了一个空字符串,经过排查,该字符串在经 htmlspecialchars 函数转义之前正常,而在转义之后却变成了空字符串。调用例子如下:
遂查看PHP手册,获知 htmlspecialchars 函数原型如下:
string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = 'UTF-8' [, bool $double_encode = true ]]] )
...
阅读全文…
$str = '中文字符串';
$str_converted = htmlspecialchars($str);
echo $str_converted;
$str_converted = htmlspecialchars($str);
echo $str_converted;
遂查看PHP手册,获知 htmlspecialchars 函数原型如下:
string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = 'UTF-8' [, bool $double_encode = true ]]] )
...
阅读全文…
php自带的html过滤和转义函数、编码解码函数收集
[ 2021-07-24 09:48:53 | 作者: admin ]
函数名释义介绍htmlspecialchars将与、单双引号、大于和小于号化成HTML格式&转成&"转成"'转成'<转成<>转成>htmlentities()...
阅读全文…
阅读全文…
PHP 开启错误显示并设置错误报告级别
[ 2021-06-17 09:47:17 | 作者: admin ]
警告:生产环境永远都不要显示任何错误信息!
显示错误(display_errors)和错误报告(error_reporting)是两回事。PHP 脚本发生错误时,可以根据设置选择是否报告这个错误(记录到错误日志中),如果设置中开启了 display_errors,则同时把错误信息打印到屏幕上。
项目中常用的设置
阅读全文…
显示错误(display_errors)和错误报告(error_reporting)是两回事。PHP 脚本发生错误时,可以根据设置选择是否报告这个错误(记录到错误日志中),如果设置中开启了 display_errors,则同时把错误信息打印到屏幕上。
项目中常用的设置
switch (ENVIRONMENT)
{
// 对于开发环境,报告所有错误,同时显示到屏幕上
case 'development':
error_reporting(-1);
ini_set('display_errors', 1);
break;
// 对于测试和生产环境,不显示错误,5.3 以上的版本,不报告通知、废弃方法、严格这几类错误
...{
// 对于开发环境,报告所有错误,同时显示到屏幕上
case 'development':
error_reporting(-1);
ini_set('display_errors', 1);
break;
// 对于测试和生产环境,不显示错误,5.3 以上的版本,不报告通知、废弃方法、严格这几类错误
阅读全文…
PHP-根据字符串和所用字体计算字符串所占宽高
[ 2020-12-08 16:29:47 | 作者: admin ]
由于用GD画图, 需要把一段文字在一个框内居中, 但是文字的宽度如果用strlen($str) * $font_size来计算的话, 由于文字不是等宽高的, 所以会导致偏离, 最后选用的GD库的imagettfbbox()函数, 其原型如下
array ImageTTFBBox(int size, int angle, string fontfile, string text);
其中返回一个数组, 有八个元素, 描述了四个角的坐标
0 左下角 X 位置
1 左下角 Y 位置
2 右下角 X 位置
3 右下角 Y 位置
4 右上角 X 位置
5 右上角 Y 位置
6 左上角 X 位置
7 左上角 Y 位置
$pos = imagettfbbox(self::FONT_SIZE , 0, self::FONT_FILE, $name);
...
阅读全文…
array ImageTTFBBox(int size, int angle, string fontfile, string text);
其中返回一个数组, 有八个元素, 描述了四个角的坐标
0 左下角 X 位置
1 左下角 Y 位置
2 右下角 X 位置
3 右下角 Y 位置
4 右上角 X 位置
5 右上角 Y 位置
6 左上角 X 位置
7 左上角 Y 位置
$pos = imagettfbbox(self::FONT_SIZE , 0, self::FONT_FILE, $name);
...
阅读全文…
PHP基于phpqrcode类生成二维码的方法详解
[ 2020-12-08 16:05:34 | 作者: admin ]
p.s. 以前还不知道,phpqrcode自带保存二维码参数。
前期准备:
1.phpqrcode类文件下载,下载地址:https://sourceforge.net/projects/phpqrcode/
2.PHP环境必须开启支持GD2扩展库支持(一般情况下都是开启状态)
方法解读:
下载下来的类文件是一个压缩包,里边包含很多文件和演示程序,我们只需要里边的phpqrcode.php这一个文件就可以生成二维码了。它是一个多个类的集合文件,我们需要用到里边的QRcode类(第2963行)的png()方法(第3090行):
阅读全文…
前期准备:
1.phpqrcode类文件下载,下载地址:https://sourceforge.net/projects/phpqrcode/
2.PHP环境必须开启支持GD2扩展库支持(一般情况下都是开启状态)
方法解读:
下载下来的类文件是一个压缩包,里边包含很多文件和演示程序,我们只需要里边的phpqrcode.php这一个文件就可以生成二维码了。它是一个多个类的集合文件,我们需要用到里边的QRcode类(第2963行)的png()方法(第3090行):
public static function png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4, $saveandprint=false)
...阅读全文…
nginx 虚拟目录的设置alias
[ 2020-06-13 15:18:12 | 作者: admin ]
p.s. 在增加虚拟目录的时候,location块可以使用root和alias,差别是使用root后,需要url中再多加个虚拟目录
使用alias 会直接映射 /data/code_img/1.png
使用root 会映射为 /data/code_img/img/1.png
静态文件只要如上面设置即可,但是php的文件需要做下面的处理
阅读全文…
location ^~ /img/ {
alias /data/imgs/;
}
当浏览器访问 http://127.0.0.1/img/1.pngalias /data/imgs/;
}
使用alias 会直接映射 /data/code_img/1.png
使用root 会映射为 /data/code_img/img/1.png
静态文件只要如上面设置即可,但是php的文件需要做下面的处理
location ~ ^/public/.+\.php$
{
root /data/www/web/public;
rewrite /public/(.*\.php?) /$1 break;
...{
root /data/www/web/public;
rewrite /public/(.*\.php?) /$1 break;
阅读全文…
使用preg_match和preg_match_all正则书写正确,但匹配不到的解决办法
[ 2020-06-13 10:32:56 | 作者: admin ]
使用preg_match正则书写正确,但匹配不到的解决办法
以下建立在正则书写正确,且有匹配内容的前提下,有可能是preg_match对匹配的字符串有长度限制的问题
解决办法(任选一个):
1.在php.ini中加入(随便放到哪里):pcre.backtrack_limit=-1
2.ini_set(‘pcre.backtrack_limit', 999999999); (php 5.2.0版本之后可用)
另外pcre.recursion_limit是PCRE的递归限制,这个项如果设很大的值,会消耗所有进程的可用堆栈,最后导致PHP崩溃。
实际项目应用中,最好也对内存进行限定设置:ini_set(‘memory_limit', '64M');
https://blog.lmlyz.online/index/detail/id/64.html
以下建立在正则书写正确,且有匹配内容的前提下,有可能是preg_match对匹配的字符串有长度限制的问题
解决办法(任选一个):
1.在php.ini中加入(随便放到哪里):pcre.backtrack_limit=-1
2.ini_set(‘pcre.backtrack_limit', 999999999); (php 5.2.0版本之后可用)
另外pcre.recursion_limit是PCRE的递归限制,这个项如果设很大的值,会消耗所有进程的可用堆栈,最后导致PHP崩溃。
实际项目应用中,最好也对内存进行限定设置:ini_set(‘memory_limit', '64M');
https://blog.lmlyz.online/index/detail/id/64.html