Nginx internal 指令限制访问图片资源文件

Nginx 的 internal 指令可以用来限制 Web 公共目录下的图片等资源文件被任意用户直接访问。一个明显的使用场景是,对于用户上传的认证图片,属于个人隐私资源,不应该让所有用户都能访问得到,通常只能由管理员审核时查看。

假定需要限制访问的图片的 URL 路径是 /images/auth-pictures/,Nginx 进行如下配置:

重启 Nginx,直接访问 /images/auth-pictures/ 下的图片,会返回 404:


利用 PHP 在响应头加上 “X-Accel-Redirect” 域使请求重定向到真实的图片路径上面:

此时就可以通过 PHP 程序来重定向请求访问图片了:

WordPress 使用本地化的 emoji 表情包

结合使用 Native Emoji 和 WP Local Emoji 两个插件,可以达到使用本地化的 emoji 表情包的目的。

安装好上述两个插件并且启用:

为了使 Native Emoji 表情使用本地化的 emoji 表情包图片,而不是 s.w.org 域名下的表情包图片,需要修改以下两处源代码。

修改 wp-content/plugins/native-emoji/js/tinymce-plugin.js,替换以下代码:

为:

修改 wp-content/plugins/wp-local-emoji/wp-local-emoji.php,新增代码:

保存好之后,不论是在编辑器中使用 emoji 表情包,抑或插入 emoji 表情到文章里,都将使用本地化的 emoji 表情图片了 ✌!

Laravel .env 多环境配置文件的使用

项目开发中,通常会有本地开发环境、内网测试环境、线上真实环境。这三种环境的配置通常都不尽相同,Laravel 可以通过环境变量  APP_ENV 的值来加载不同的 .env 配置文件。下面会介绍两种方法,分别是通过 Nginx 和 PHP-FPM 来设置 APP_ENV 环境变量的值。

方法一:修改 Nginx 配置文件设置 APP_ENV:

方法二:修改 PHP-FPM 配置文件设置 APP_ENV:

上述两种方法只需二选一。重启 Nginx 和 PHP-FPM 服务,Laravel 框架就会自动选择加载项目根目录下的 .env.xxxx 配置文件,而不会去加载 .env 配置文件了。

通过 APP_ENV 环境变量值加载特定 .env 配置文件的 Laravel 源代码位于文件Illuminate/Foundation/Bootstrap/DetectEnvironment.php 中,摘录关键代码如下:

请注意:

当设置了 APP_ENV 环境变量时,当运行 Laravel 的 Aritsan 终端命令之前,比如迁移命令(./artisan migrate)、启动队列侦听器(./artisan queue:listen)等等,均需要在终端也导入 APP_ENV 环境变量。

或者

当然,也可以选择在 ~/.bash_profile 或者 ~/.bashrc 中一劳永逸地设定好终端环境变量 APP_ENV 的值。

VirtualBox 启动时提示“获取 VirtualBox COM 对象失败”的解决

昨天给电脑打了一堆补丁和更新,今天启动 VirtualBox 的时候提示 “获取 VirtualBox COM 对象失败”,好在百度到了 CSDN 上的一篇文章解决了这个问题,有惊无险,有惊无险!

提示 “获取 VirtualBox COM 对象失败” 的错误详情:

错误截图如下:

试了下命令行来操作 VirtualBox,仍旧有相同的错误提示:

下面是解决方法:

修改注册表的如下两项:
HKEY_CLASSES_ROOT\CLSID\{00020420-0000-0000-C000-000000000046}\InprocServer32
HKEY_CLASSES_ROOT\CLSID\{00020424-0000-0000-C000-000000000046}\InprocServer32

将它们的默认值都改成:
C:\Windows\system32\oleaut32.dll

如图所示:

此时再打开 VirtualBox,发现可以正常启动了 🎉。

PS:如果打开 VirtualBox 后,发现无法启动里面的虚拟机,可以尝试重启下电脑。