幸福飞过海 - PHP https://fengqi.me/category/php/ 关系php的一些记录 做了个Typecho上传文件到Cloudflare R2的插件 https://fengqi.me/php/748.html 2025-07-18T19:03:00+00:00 VPS到期后,把Typecho迁移到了Vercel,存储、缓存都没问题,只有图片是个问题,所以写了个插件,上传到Cloudflare R2上,手撸的S3协议实现,只有一个单文件。插件地址:typecho-cloudflare-r2,安装使用写了详细说明。 [分享] 开源一个 PHP 框架 Awheel https://fengqi.me/php/awheel.html 2017-04-09T08:15:00+00:00 项目地址: Awheel当前版本: v1.5.0PHP要求: >=5.4.0介绍基本功能: 路由/中间件/控制器/控制台/组件/配置加载/输入&输出.框架最初是为了满足公司业务需求一步步造出来的, 但是从一开始就很独立的没有柔任何业务代码进去, 只保留了基本功能, 除此以外的功能全部需要自行扩展, 因为我觉得框架提供的功能越多学习和推广的成本就越高, 出现 Bug 的几率也就越高, 反倒不如都拆分成组件, 而且 Composer 那么好用, 扩展起来分分钟的事.所以没有自带模板引擎, 需要使用组件功能自行扩展, 只需要继承并实现 Component 接口的 getAccessor 和 register 方法就可以使用, 目前我提供了 Smarty, Blade, SPA 三种模板扩展.也没有自带 ORM 组件, 但是这里提供一个扩展 medoo-model 这是一个轻量级的数据库访问封装, 不管是名字还是功能我都非常喜欢?, 也可自行扩展 Eloquent ORM 或 Doctrine ORM 稍后我会给出一个 Eloquent ORM的封装扩展给喜欢的人使用[...] [记录]Nginx 指令 Map 应用场景之: 统一 PHP 开发环境 https://fengqi.me/php/394.html 2015-07-24T06:09:00+00:00 在统一开发环境上很多团队很多公司做过很多尝试, 比如统一使用一个集成包, 使用 vagrant 等.大部分都是在 Windows 下开发, 但是很多优秀的扩展和特性不被 Windows 支持,同时很多人对 *nix 操作不熟练, 并且 vagrant 有个问题(其实是 VirtualBox 的问题)就是文件锁, 有时会导致 svn 无法提交/更新.这里尝试给出另外一个方案, 个人觉得可行性还是很大的.本文记录的方案只是个预案, 还没在公司实际推行.本文演示环境使用 Ubuntu Server 14.04 和 Windows7思路开发人员通过 Samba 共享代码服务器分别挂载开发人员共享到服务器服务器配置根据开发者 IP 使用不同的代码[...] [原创] Yaf 使用 Eloquent ORM 做数据层 https://fengqi.me/php/386.html 2015-06-05T15:35:00+00:00 Yaf 默认是不提供数据层处理功能的, 需要自行扩展.Eloquent ORM 是 Laravel 的内置 ORM 功能非常强大, 而且已经独立成组建, 任何项目都可以选择使用它.目前最新版是5.0.28, 主要版本是跟随 Laravel 更新的, 下一个版本是 5.1 LTS 版, 非常棒.在进行集成前, 需要开启 Yaf 的 namespace, 确保 php.ini 有如下配置:yaf.use_namespace=1为了方便管理, 建议使用 Composer 管理扩展, 以下示例均使用 Composer.安装 Eloquent ORM, 在项目根目录创建 composer.json, 内容如下:{ "require": { "illuminate/database": "5.0.*", "illuminate/events": "5.0.*", "symfony/debug": "2.6.*", "symfony/var-dumper": "2.6.*" } }然后运行 composer update 下载代码, 并在 index.php 引入 vendor 目录下的 autoload.php 速度不理想可尝试我共享的镜像 http://composer.fengqi.me.<?php // 程序启动时间 define('APP_START_TIME', microtime(true)); // 程序跟目录 define('ROOT_PATH', realpath(__DIR__.'/../')); // 加载 Composer require ROOT_PATH.'/vendor/autoload.php'; // 启动程序 $app = new Yaf\Application(ROOT_PATH."/config/application.ini"); $app->bootstrap()->run();配置数据库信息, application.ini 增加以下内容:; database database.driver = mysql database.host = 127.0.0.1 database.database = yaf database.username = root database.password = 123456 database.port = 3306 database.charset = utf8 database.collation = utf8_unicode_ci database.prefix = ""这里使用 MySQL 作为示例, Eloquent 支持 MySQL, Postgres, SQL Server, SQLite.[...] [总结] Laravel 如何在预加载试控制返回的字段 https://fengqi.me/php/261.html 2014-12-16T11:52:00+00:00 参考链接:Get specific columns using “with()” function in Laravel EloquentLaravel 的预加载使用方式是:Post::with('user', 'user.extend')->orderBy('id', 'DESC')->paginate(10, array('id', 'content')); 拿到用户和扩展信息太方便了,但是问题是返回的数据太多了,站在一个强迫症的角度简直无法容忍啊。控制返回的字段有两种方法,一个是在 model 里定义关系时指定好字段,但是不太灵活,还一种是在 ->with() 这里做文章:Post::with(array( 'user' => function($query) { $query->select('id', 'name'); }, 'user.extend' => function($query) { $query->select('birth', 'intro'); }, ))->paginate(10, array('id', 'content')); 就这样。既然可以指定字段那还可以做一些别的什么呢??? [分享] 用 PHP 写了一个 Transmission 的 RSS 下载 https://fengqi.me/php/246.html 2014-11-29T05:40:00+00:00 项目地址: Transmission RSS目前支持的有 CHD/CMCT/TTG/OPENCD, 其它 PT 我没有账号无法确定适配, 因为 XML 格式可能不一样.使用方法:git clone https://github.com/fengqi/transmission-rss.git transmission-rss cd transmission-rss 修改下 rss.php 里的配置$rssLink = ''; #点击 chd 里的 [RSS下载], 把订阅地址填进去 $server = 'http://127.0.0.1'; # 默认 127.0.0.1 $port = '9091'; # 默认 9091 $rpcPath = '/transmission/rpc'; # 默认 /transmission/rpc $user = ''; # 用户名, 如果有设置, 填进去 $password = ''; # 密码, 如果有设置, 填进去 然后运行 php rss.php 测试 ok 就可以放到 cron 里运行了,sudo crontab -e 写入以后内容 # Transmission RSS 下载 */10 * * * * /opt/bin/php /opt/transmission-rss/rss.php php 的路径(使用命令: which php 获取), 和 clone 的项目路径根据自己情况修改下.其他资源: Transmission ADD-ONS [转载]PHP 5.4中新增的特性Traits https://fengqi.me/php/php-traits.html 2014-05-16T08:19:40+00:00 TODO原文地址:PHP中的traits [转载]为什么寄存器比内存快? https://fengqi.me/php/177.html 2013-12-11T07:37:00+00:00 原文链接: 为什么寄存器比内存快?原文作者: 阮一峰计算机的存储层次(memory hierarchy)之中,寄存器(register)最快,内存其次,最慢的是硬盘。 同样都是晶体管存储设备,为什么寄存器比内存快呢? [转载]PHP设置Cookie的HTTPonly属性 https://fengqi.me/php/171.html 2013-10-23T09:32:21+00:00 原文链接: PHP设置Cookie的HTTPonly属性PS: 直接转载, 有时间再整理下排版, 有点挤...httponly是微软对cookie做的扩展。这个主要是解决用户的cookie可能被盗用的问题。 大家都知道,当我们去邮箱或者论坛登陆后,服务器会写一些cookie到我们的浏览器,当下次再访问其他页面时,由于浏览器回自动传递cookie,这样就实现了一次登陆就可以看到所有需要登陆后才能看到的内容。也就是说,实质上,所有的登陆状态这些都是建立在cookie上的!假设我们登陆后的cookie被人获得,那就会有暴露个人信息的危险!当然,想想,其他人怎么可以获得客户的cookie?那必然是有不怀好意的人的程序在浏览器里运行!如果是现在满天飞的流氓软件,那没有办法,httponly也不是用来解决这种情况的,它是用来解决浏览器里javascript访问cookie的问题。试想,一个flash程序在你的浏览器里运行,就可以获得你的cookie的!IE6的SP1里就带了对httponly的支持,所以相对还说还是些安全性。PHP中的设置 PHP5.2以上版本已支持HttpOnly参数的设置,同样也支持全局的HttpOnly的设置,在php.ini中 ----------------------------------------------------- session.cookie_httponly = ----------------------------------------------------- 设置其值为1或者TRUE,来开启全局的Cookie的HttpOnly属性,当然也支持在代码中来开启: ----------------------------------------------------- ----------------------------------------------------- Cookie操作函数setcookie函数和setrawcookie函数也专门添加了第7个参数来做为HttpOnly的选项,开启方法为: ------------------------------------------------------- setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE); setrawcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE); ------------------------------------------------------- 对于PHP5.1以前版本以及PHP4版本的话,则需要通过header函数来变通下了: ------------------------------------------------------------- ------------------------------------------------------------- [总结]自行编译php手册 https://fengqi.me/php/119.html 2013-05-08T02:34:01+00:00 占位, 正在折腾集成评论编译...