PHP
何当共剪西窗烛,却话巴山夜雨时
hober.z
修炼
展开
-
你确定你真的懂Nginx与PHP的交互?
原文地址:http://www.imooc.com/article/19278Nginx是俄国人最早开发的Webserver,现在已经风靡全球,相信大家并不陌生。PHP也通过二十多年的发展来到了7系列版本,更加关注性能。这对搭档在最近这些年,叱咤风云,基本上LNMP成了当下的标配。可是,你用了这么多年的Nginx+PHP的搭配,你真正知道他们之间是怎么交互怎么通信的么?作为一道常常用来转载 2017-10-13 10:55:50 · 770 阅读 · 0 评论 -
apache修改.htaccess使其强制https访问
http访问默认80端口,https访问默认443端口 首先确保已经可以通过https访问站点 然后在站点访问目录下添加.htaccessRewriteEngine OnRewriteCond %{SERVER_PORT} 80RewriteRule ^(.*)$ https://www.domain.com/$1 [R,L]原创 2017-10-07 13:49:03 · 3496 阅读 · 0 评论 -
伪静态和重定向(apache)学习笔记
日志错误日志文件: /logs/error.log(或error_log)日志级别(级别从高到低): debug, info, notice, warn, error, crit, alert, emerg.低级别的日志选项会包括高级别的信息,如info会包含notice、warn的信息 默认配置: LogLevel warn调试配置(举例): LogLevel alert原创 2017-10-03 15:05:36 · 1988 阅读 · 0 评论 -
.htaccess 详解
.htaccess是什么.htaccess文件(或者"分布式配置文件")提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网转载 2017-09-27 15:27:55 · 444 阅读 · 0 评论 -
openSUSE下lamp部署
openSUSE Leap 42.2适用。首先,获得root权限。准备apache2安装apache2zypper in apache2启动apache服务器systemctl start apache2 重启apache服务器,使用systemctl restart apache2 停止apache服务器,使用systemctl stop ap原创 2017-05-12 17:57:25 · 566 阅读 · 0 评论 -
lnmp一键安装包环境下让nginx支持thinkphp
1.支持pathinfo模式 所说需要先在nginx的配置文件enable-php.conf里替换一行include enable-php-pathinfo.conf; 2.隐藏index.php 在nginx配置文件(nginx.conf)或你的虚拟主机下添加:location / { if (!-e $request_filename){ rewrite原创 2017-11-12 14:48:19 · 1620 阅读 · 0 评论 -
nginx配置ThinkPHP5二级目录访问
以前写过一次类似的配置经历,然后过了N长时间,再次配置又发现各种问题,这里总结一下。目标效果对于web根目录下的如下项目文件夹 可以通过 http://www.example.com/项目名/模块名/方法名 进行访问第一步首先,你要确保在不配置二级目录的情况下,可以通过浏览器访问到。例如:http://www.example.com/blog/index.php?s=...原创 2018-07-22 17:28:20 · 6196 阅读 · 2 评论 -
从无到有,使用Phalcon多模块作接口开发模板
前提:phalcon-devtools工具创建基本框架创建一个多模块的项目phalcon project website modules创建新module1.新增加一个名叫backend,以Test\Modules为命名空间的后台模块phalcon module –-name backend –-namespace=Test\Modules –output=...原创 2017-11-12 14:33:51 · 2166 阅读 · 0 评论 -
Phalcon cli应用
运行方法当前项目目录下php run(或app/bootstrap_cli.php) main(类名) main(方法名)使用公共方法如果要使用公共的model,在Module.php中public function registerAutoloaders(DiInterface $di = null){ $loader = new Loader();...原创 2018-01-21 17:42:43 · 841 阅读 · 0 评论 -
PHP二维数组把某一相同健值进行归类
$books = [ [ 'name'=>'a', 'type'=>1, 'price'=>100 ], [ 'name'=>'b', 'type'=>2, 'price'=>200 ], [ 'name'=&g...原创 2018-02-27 23:53:21 · 4846 阅读 · 0 评论 -
php读写mongoDB中的binary数据
官方文档http://php.net/manual/zh/class.mongodb-bson-binary.php#mongodb-bson-binary.constants.type-generic读数据使用方法jsonSerialize(),如$image->feature->jsonSerialize();写数据通过Binary构造函数...原创 2018-02-27 23:23:52 · 1395 阅读 · 0 评论 -
使用fastdfs统一管理ueditor上传的文件
目标使用fastdfs统一管理ueditor上传的资源文件。使上传的图片、附件、视频上传到fastdfs中,而不是默认的项目目录下思路根据官方文档,config.json中的imagePathFormat配置项配置的是上传文件保存路径,默认也是上传后文件url返回地址。 我们在此基础上将文件保存路径从项目下目录上传到fastdfs(项目目录下的文件可以自行删除),并将返回url替换成原创 2018-01-21 17:26:51 · 1581 阅读 · 0 评论 -
Phalcon 上传文件
if($this->request->hasFiles()==true){ foreach($this->request->getUploadedFiles() as $file){ echo "上传文件名:".$file->getName()."<br />"; echo "临时文件路径:".$file-&am原创 2017-10-31 19:31:23 · 1451 阅读 · 0 评论 -
PHP非阻塞执行方法
需求正常访问一个A方法,A方法需要立即返回,但是A方法会调用一个B方法,B方法可能会阻塞执行很长时间(或者B方法是定时任务)。解决使用fsockopen方法,请求B方法的URL,并设置为非阻塞模式发送请求demofsockopen_test.php<?php/*** 非阻塞请求* @param $url* @return bool*/function ...原创 2018-07-24 21:33:45 · 1143 阅读 · 0 评论 -
PHP发送请求工具方法
PHP请求接口时常常会调用curl方法,这里展示一种兼容性的curl工具方法。&amp;lt;?php// PHP中一种兼容性强的请求url方式function do_curl($url, $data){ if (function_exists('curl_init') &amp;amp;&amp;amp; function_exists('curl_exec')) { $info ...原创 2018-07-14 18:05:01 · 179 阅读 · 0 评论 -
PHP生成唯一订单号
思路来源参考MongoDB中ObjectId生成规则。 在MongoDB中,它的ObjectId生成规则如下: a 4-byte value representing the seconds since the Unix epoch, a 3-byte machine identifier, a 2-byte process id, and ...原创 2018-08-02 23:43:32 · 1931 阅读 · 0 评论 -
PHP安装扩展报错undefined symbol: php_json_serializable_ce
环境 lnmp(ubuntu 16.0.4 ;php7)目的 安装phalcon7(相关链接:https://github.com/dreamsxin/cphalcon7网上还有有很多,自行查找)问题 安装完毕验证时,执行命令# php --ri phalcon7 报错:PHP Warning: PHP Startup: Unable to load...转载 2018-08-15 13:43:52 · 3044 阅读 · 0 评论 -
Nginx整合PHP中"file not found" & "Primary script unknown" 问题解决
最近使用docker构建lnmp环境,遇到了平时没有遇到过的一个nginx整合php的问题,这里记录一下。问题描述nginx配置好php之后,访问目录下的一个php文件,显示 file not found解决问题过程首先去看nginx日志,默认的在/var/log/nginx/ 目录下,重点看error.log文件。我的日志中显示:FastCGI sent in stderr: "Pri...原创 2018-12-13 23:23:24 · 1651 阅读 · 1 评论 -
CentOS编译安装PHP
Target Version:PHP 7.11. download php7.1http://cn2.php.net/downloads.php2. upload to serverso easy, just do it3. configure install environmentyum groupinstall "Development Tools"yum install lib...原创 2018-12-21 20:06:45 · 693 阅读 · 0 评论 -
利用PHPMailer发送邮件的一个小demo
利用PHPMailer发送邮件十分简单。下载一个PHPMailer,github上的地址为:PHPMailer 。在自己的代码中使用PHPMailer。<?php require './PHPMailer-master/PHPMailerAutoload.php'; $mail=new PHPMailer; $mail->isSMTP(); $mail->Host="smt原创 2017-04-09 19:48:05 · 4569 阅读 · 0 评论 -
PHP7操作MongoDB增删改查
说明 BulkWrite 收集将被发送到服务端的写入选项 Manager 定义一个连接器,连接到数据库 WriteConcern 配置写入策略,满足不同写入需求 executeBulkWrite 真正执行写入增$bulk = new MongoDB\Driver\BulkWrite;$bulk->insert(['x'=>1,'name'=>'taobao','url'=>'原创 2017-10-14 11:11:48 · 1401 阅读 · 0 评论 -
ThinkPHP框架下成功、错误模板页面修改
默认的模板路径为TP目录下的 ThinkPHP/Tpl/dispatch_jump.tpl文件。修改配置文件在应用目录下的/Common/Conf/config.php中添加/* 错误页面模板 */ 'TMPL_ACTION_ERROR' => 'Public/dispatch_jump', // 默认错误跳转对应的模板文件' 'TMPL_ACTION_SUCCESS'原创 2017-08-25 11:19:50 · 6722 阅读 · 0 评论 -
Phalcon报错Can't obtain model's source from models list:xxx
Phalcon使用PHQL操作时报错Can't obtain model's source from models list: 'Robots', when preparing: select * from robots where id=:id:代码如下$res=$this->modelsManager->executeQuery("select * from r...原创 2017-10-25 14:24:47 · 1424 阅读 · 0 评论 -
thinkphp js路径问题
thinKPHP碰到的一些问题第一个问题:JS中调用TP定义的常量__URL__、__APP__等 TP给我们定义了这些常量确实非常好用,在模板中调用的时候感觉非常舒服。但是,这仅仅是在模板,在JS中就不是那么回事了,看一下如下的关键代码:$.ajax({type:"post",url:"__URL__/checkLogin"});怎么使用都错误,用Fir转载 2017-05-02 16:50:06 · 627 阅读 · 0 评论 -
正则表达式中的贪婪与非贪婪模式
贪婪模式是指匹配时尽可能匹配多的字符串,非贪婪模式则匹配尽可能少的字符串。使用正则表达式进行匹配时,可能会出现多种匹配结果都符合的情况。而在php中,默认匹配贪婪模式。如:$str="张三29";$pattern="/(.*)/";preg_match_all($pattern,$str,$matches);var_dump($matches[0]);匹配结果为:原创 2017-04-15 17:02:59 · 1015 阅读 · 0 评论 -
Thinkphp的URL美化
通常的URL里面含有index.php,为了达到更好的SEO效果可能需要去掉URL里面的index.php 。通过URL重写的方式可以达到这种效果,通常需要服务器开启URL_REWRITE模块才能支持。下面是Apache的配置过程,可以参考下:1、httpd.conf配置文件中加载rewrite_module modules/mod_rewrite.so模块(去掉前面的#)2、原创 2017-04-15 16:46:00 · 2048 阅读 · 0 评论 -
Unix时间戳转php日期
UNIX时间戳和格式化日期是我们常打交道的两个时间表示形式,Unix时间戳存储、处理方便,但是不直观,格式化日期直观,但是处理起来不如Unix时间戳那么自如,所以有的时候需要互相转换,下面给出PHP日期转时间戳、MySQL日期转换函数互相转换的几种转换方式在MySQL中完成这种方式在MySQL查询语句中转换,优点是不占用PHP解析器的解析时间,速度快,缺点是只能用在数据库查询中,有局限性。 1. ...转载 2017-04-30 08:49:48 · 457 阅读 · 0 评论 -
Thinkphp3.2中使用PHPMailer发送邮件
在项目下的Common/Common/function.php中,创建一个发送邮件的函数。function sendMail($to,$title,$content){ Vendor('PHPMailer.PHPMailerAutoload'); $mail=new PHPMailer(); $mail->isSMTP(); $mail->isHTML(C('MAIL_ISHT原创 2017-04-09 20:17:14 · 477 阅读 · 0 评论 -
php正则表达式(手册)
详细文档下载链接:php正则表达式1.全部符号解释字符描述\将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。^匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。...原创 2017-02-15 19:47:56 · 741 阅读 · 0 评论 -
PHP实现抓取HTTPS内容
最近在研究Hacker News API时遇到一个HTTPS问题。因为所有的Hacker News API都是通过加密的HTTPS协议访问的,跟普通的HTTP协议不同,当使用PHP里的函数file_get_contents() 来获取API里提供的数据时,出现错误,使用的代码是这样的:<?php$data = file_get_contents("https://hacker-news.转载 2017-02-07 15:46:46 · 336 阅读 · 0 评论 -
PHP中$_FILES的使用方法及注意事项说明
$_FILES:经由 HTTP POST 文件上传而提交至脚本的变量,类似于旧数组$HTTP_POST_FILES 数组(依然有效,但反对使用)详细信息可参阅 POST方法上传$_FILES数组内容如下:$_FILES['myFile']['name'] 客户端文件的原名称 $_FILES['myFile']['type'] 文件的 MIME类型,需要浏览器提供该信息的支原创 2016-06-22 17:02:07 · 1032 阅读 · 0 评论 -
爬虫的一点经验
1.写一个网页爬虫的时候遇到了一个div嵌套问题,即一个大的div里面有很多小的div,如: XXX XXXXX XXXX这样一个类型,如果爬取内层的div是很简单的,正则表达式十分好写:"/(.*?)/"但是如果要爬取外面的div该怎么办呢?当时我的做法是继续寻找,找出该段内容后面的具有识别该段内容能力的内容。如上式,在正则表达式中加入对id为com原创 2017-05-03 23:00:12 · 419 阅读 · 0 评论 -
php中的重载
PHP中的"重载"与其它绝大多数面向对象语言不同。传统的"重载"是用于提供多个同名的类方法,但各方法的参数类型和个数不同。 PHP所提供的"重载"(overloading)是指动态地"创建"类属性和方法,是通过魔术方法(magic methods)来实现的。 具体来说分为两类:1.属性重载public void __set ( string $name , mixed $v转载 2017-06-29 09:53:59 · 344 阅读 · 0 评论 -
Phalcon Framework的MVC结构及启动流程分析
目前的项目中选择了Phalcon Framework作为未来一段时间的核心框架。技术选型的原因会单开一篇Blog另说,本次优先对Phalcon的MVC架构与启动流程进行分析说明,如有遗漏还望指出。Phalcon本身支持创建多种形式的Web应用项目以应对不同场景,包括迷你...转载 2017-10-27 13:49:18 · 706 阅读 · 0 评论 -
ThinkPHP5中的事务操作
官方手册里的事务操作 1.自动控制事务处理(匿名函数方式)Db::transaction(function(){ Db::table('think_user')->find(1); Db::table('think_user')->delete(1);});2.手动控制事务// 启动事务Db::startTrans();try{ Db::table('think_us原创 2017-09-27 11:25:02 · 5124 阅读 · 0 评论 -
PHP实现图片转字符画
看到网上有其他人用Python,js实现的图片转字符画,挺有趣的,于是我尝试着用php实现了一个。原理图片转字符画本质上是将图片上的像素,根据其明暗程度的不同,选用不同的字符替换。其实现过程一般为设置一个像素块大小,然后选取每个像素块的代表像素 依次获取每个像素块的RGB值,计算灰度值 根据灰度值选择填充字符 输出实现<?php/** 功能:* 由不同图片格式...原创 2017-08-26 11:59:05 · 2147 阅读 · 0 评论 -
PHP中的比较运算符
一般规则一般来说,有以下规则 数字与字符串比较如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行。但当用 === 或 !== 进行比较时则不进行类型转换,因为此时类型和数值都要比对。 例如:<?phpvar_dump(0 == "a"); // 0 == 0 -> truevar_dump("1" == "01"); // 1 == 1 ->原创 2017-08-23 10:05:02 · 2188 阅读 · 0 评论 -
PHP中的scalar
如果将一个对象转换成对象,它将不会有任何变化。如果其它任何类型的值被转换成对象,将会创建一个内置类 stdClass 的实例。如果该值为 NULL,则新的实例为空。数组转换成对象将使键名成为属性名并具有相对应的值。对于任何其它的值,名为 scalar 的成员变量将包含该值。<?php $obj=(object)'string'; echo $obj->scalar;输出string转载 2017-08-22 11:43:01 · 1338 阅读 · 0 评论 -
微信开发中的消息验证与消息回复
微信开发中的消息验证与消息回复处理逻辑判断微信服务器传来的数据是否含有名为echostr的GET参数有则进行服务器消息验证(valid)没有则微信推送过来的是一条消息,需要我们处理。 消息类型分为 1)事件类型:用户关注/取消关注事件、扫描二维码事件…… 2)被动回复类型:用户发送过来一条文字、图片、语音…… 然后根据需求回复相应的文字、图片、图文….代码示例<?phpdefine原创 2017-08-08 17:04:13 · 4323 阅读 · 0 评论 -
ThinkPHP中添加公共类
添加公共类有时,需要在thinkphp中的一些类之中进行一些公共的操作,如检查用户是否登录、session是否过期等,这些可以通过在thinkphp中添加公共类来实现。举一个后台添加用户验证的例子来说。前提:后台的每一个页面都要检测该是否是允许登录的用户,检测函数为checkAdmin()。1.在应用的Common目录下建一个Controller目录,在Controller目录里添原创 2017-07-03 21:20:20 · 2900 阅读 · 0 评论