PHP学习记录
文章平均质量分 71
孙雪峰
邮箱:[email protected]
博客:sunxuefeng.com
展开
-
时间戳的理解
最近需求涉及到不同时区的时间展示,发现自己对于时间戳的理解存在误差。Unix 时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。UNIX时间戳的 0 按照 ISO 8601 规范为 :1970-01-01T00:00:00Z.简单来说,时间戳是当前时间距离 1970-01-01T00:00:00Z 有多少秒。比如,当前时间为 2022年7月6日10点32分50秒,故这个时间点对应的时间戳为 1657074770这里忽略了两个东西,1970-01-01T00:00:00Z原创 2022-07-06 11:40:06 · 5020 阅读 · 1 评论 -
php自动加载基类文件
博客搬家:欢迎光临新地址问题描述偶尔我们可能不使用php框架写一些代码,会自己写一个框架或者包,这时一般会涉及多个文件。 这种情况下,如果只使用命名空间是不能加载其他需要的文件的。 使用php的 spl_autoload_register 可以做到文件的自动加载。涉及到基类的加载有一个小细节需要注意,具体方案如下。解决方案通过如下代码可以自动加载需要的文件,当php脚本运行...原创 2018-07-17 15:36:42 · 557 阅读 · 0 评论 -
ThirdServiceManager SDK
TSM快速开始嗯,这是一个php的SDK 首先,我们需要加载tsm文件,ThirdServiceManager.php文件需要开发者自行加载,其他的文件tsm会自动加载。require ThirdServiceManager.phptsm的使用非常简单,配置好的tsm只需要两行代码就可以调用我们需要的第三方服务。$service = \TSM\ThirdServiceMana...原创 2018-07-18 15:44:32 · 195 阅读 · 0 评论 -
php使用curl发送请求时 添加header失效
新博客地址场景复现$headers['token'] = '12erthyj7y6gtfhh567tuygjhkjb';curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);这个样设置headers后,一直无法请求成功,提示缺少token。解决方案php curl文档地址 仔细看文档后发现问题所在,设置headers是key...原创 2018-07-20 11:49:29 · 9125 阅读 · 0 评论 -
phalcon使用registerNamespaces注册第三方类库文件
新博客地址phalcon使用第三方类库的时候,需要加载需要的文件,不然会提示找不到文件 一般加载文件可以使用php函数 require require_once include include_once 在phalcon中可以在引导文件中通过如下方式加载:phalcon文档 如果你的代码用命名空间组织,或者你要使用的外部类库使用了命名空间,那么 registerNamespac...原创 2018-08-15 15:38:01 · 1483 阅读 · 0 评论 -
php int类型思索
起因业务涉及了一组大整数的累加和,每个整数大约9位数,每组有几百个数字,担心数字溢出,所以了解下php int类型的范围。测试根据php官方文档,我的机器是64位,所以int范围应该是在(-263 -1 ) 到 (263 - 1)整型数的字长和平台有关,尽管通常最大值是大约二十亿(32 位有符号)。64 位平台下的最大值通常是大约 9E18,除了 Windows 下 PHP 7 以前的版...原创 2018-11-05 18:28:37 · 820 阅读 · 0 评论 -
php函数巧用 array_column
基本用途返回数组中指定的一列详情见官方文档进阶用途在使用php获取db数据的后,有时会需要使用数据的主键id或者用户id来作为数组的key,例如:$records = array( array( 'id' => 2135, 'first_name' => 'John', 'last_name' => 'Doe',...原创 2018-11-29 16:55:30 · 681 阅读 · 0 评论 -
php控制台脚本错误输出到php_errors.log
php控制台脚本错误输出到php_errors.log问题描述今天学习php函数的时候,发现错误没有输出到php_errors.log,遂有此文。解决过程先检查php.ini文件,需要有一下配置log_errors = Onerror_log =/apps/logs/php_errors.log # 可自定义的位置需要找到php.ini文件位置(没有的话,在输出的配置文件的位置...原创 2018-11-29 19:17:21 · 1883 阅读 · 0 评论 -
php为什么要提前定义变量
转自php官方文档举例<?php// 当用户合法的时候,赋值 $authorized = trueif (authenticated_user()) { $authorized = true;}// 由于并没有事先把 $authorized 初始化为 false,// 当 register_globals 打开时,可能通过GET auth.php?authorized...转载 2018-12-14 18:45:10 · 1130 阅读 · 0 评论 -
php int最大值探究
官方最大值PHP_INT_MAX 官方最大值为32平台:214748364764平台:9223372036854775807The largest integer supported in this build of PHP. Usually int(2147483647).自 PHP 5.0.5 起可用本机最大值本机环境mac 64位系统php_version >...原创 2019-08-21 17:57:59 · 5136 阅读 · 0 评论 -
如何解决 CentOS系统下 使用localhost无法连接数据库
参考 一下两篇文再,稍加改动:解决方案 mysql数据库连接的两种方式【描述】 Centos系统下,使用mysql数据库。当主机名称使用 127.0.0.1 时可以连接成功,使用 localhost 就会连接失败该如何解决。【分析】连接mysql数据库有两种方案。 1、TCP/IP (网络连接)TCP/IP套接字连接方式是MySQL在任何平台都提供的一种连转载 2017-04-25 18:04:01 · 5307 阅读 · 0 评论 -
The meta-data is invalid or is corrupt
【问题描述】检查metadata文件夹,发现有足够写权限,但是网页依然提示无法写入文件。【解决方案】检查php-fpm线程,发现此线程是由www用户启动的,但是我登录用户是dev用户。此时有两种解决方案:1、给metadata文件夹的增加任意用户的写权限2、修改php-fpm配置文件,使用dev用户启动php-fpm。原创 2017-07-19 18:06:26 · 1181 阅读 · 0 评论 -
Nginx 配置实现web解析php代码 过程记录
【Nginx配置】Nginx本身不支持对php的解析,需要将php代码转发到php-fpm 进程管理器来交给php解析器解析代码。重要的配置注意注释位置:user www www; # 用户 用户组worker_processes 1;error_log logs/error.log;#error_log logs/error.log notice;...原创 2017-04-14 16:35:21 · 6128 阅读 · 1 评论 -
PHP学习记录_基本语法
1、在PHP中,输出的字符串可以用双引号作分隔符,也可用单引号作分隔符。如果用双引号作分隔符,则字符串中的变量可以自动被替换成变量的值(这是其他程序设计语言所不具备的功能)。如果用单引号作分隔符,则不会进行这种替换,而是直接输出变量名(与其他程序设计语言相同)。 未完待续。。。原创 2015-06-22 21:16:08 · 305 阅读 · 0 评论 -
php连接mysql学习过程中遇到的各种问题总结
php直接连接mysql 可以使用php_mysql.so 等扩展包。但是到了php6之后必须使用 PDO 接口来连接mysql(php5时就加入了 PDO,那是还是可以使用php_mysql.so等直连的)。【PDO是什么】PDO一是PHP数据对象(PHP Data Object)的缩写。在没有PDO之前,php连接mysql,ms sql server,sqlite等数据库需要调用原创 2017-04-24 20:13:37 · 723 阅读 · 0 评论 -
搭建简易留言板过程中遇到的问题
php重定向mysql修改用户权限php include 导入文件今天先记录个提纲后续补充详细。。。。。。原创 2017-04-27 19:30:24 · 494 阅读 · 0 评论 -
sql 注入防护与xss攻击防护
【sql注入防护】1、过滤关键字限制mysql关键字以输入的形式注入sql,防止恶意代码对数据库产生破坏2、控制输入字符长度防止输入以16进制码注入,以长度限制,补充过滤关键字的漏洞3、关闭php错误提示防止sql输入试探,避免用户试探数据库名称、数据表名称等4、数据库权限控制控制用户权限,限制用户通过恶意代码注入进行恶意操作。 【xs原创 2017-04-26 20:21:50 · 1159 阅读 · 0 评论 -
Headers and client library minor version mismatch.
【问题描述】在反复的build Mysql的过程中,出现了这个奇怪的问题,mysql的header与lib库的版本不一致。【解决方案】多次安装mysql的过程中,每次make文件的时候,要使用make clean来清理缓存,不然make会使用上次编译过的文件,如果两次的版本不一致,就回出现标题的问题。make clean make cleanmake clean原创 2017-07-10 20:21:10 · 1103 阅读 · 0 评论 -
nginx启动错误
【错误描述】nginx: [error] invalid PID number "" in "/apps/nginx/logs/nginx.pid"【解决方案】当nginx已经处于关闭状态的时候,/apps/nginx/sbin/nginx -s reload启动nginx的命令无法找到nginx配置文件的位置,这时可以指定nginx的配置文件的位置,/原创 2017-07-04 17:46:22 · 658 阅读 · 0 评论 -
php编译错误
【错误描述】Make编译安装php出现collect2: ld returned 1 exit status make【解决方案】编辑Makefile 大约144 行左右的地方: EXTRA_LIBS = ..... -lcrypt 在最后加上 -liconv重新make原创 2017-07-04 18:17:26 · 765 阅读 · 0 评论 -
添加phpiredis扩展的时候报错
【错误描述】error while loading shared libraries: libhiredis.so.0.12: cannot open shared object file: 【解决方案】根据错误提示,使用find命令 查找本地的libhiredis文件位置,发现本地存在此文件,但是此文件指向的是 libhiredis.so.0.13文件,找了一个 li原创 2017-07-17 19:14:53 · 1297 阅读 · 0 评论 -
mysql 插入数据后显示乱码
【描述】mysql数据编码中,数据库、数据表、数据字段都是有自己的编码,如果新建时不主动定义编码集,就会使用系统默认的编码集(mysql很可能是latin1)。并且数据库、数据表、数据字段的是有优先级区别的,是数据字段 > 数据表 > 数据库。举个例子:如果数据库使用utf-8,数据表使用ascii,数据字段使用latin1。这时,你的mysql对外表现的数据编码集就是原创 2017-04-12 19:22:58 · 335 阅读 · 0 评论