Typecho上传附件失败解决


版本信息

typecho版本:1.1

服务器版本:CentOS 7

问题描述

在typecho上传附件是总是失败

解决方法

在博客程序安装目录下找到var/Typecho/Common.php这个文件,在大约400行左右的地方有这样一个函数

 401     /**
402     * 检测是否在app engine上运行,屏蔽某些功能
403     *
404     * @static
405     * @access public
406     * @return boolean
407     */
408     public static function isAppEngine()
409     {
410         return !empty($_SERVER['HTTP_APPNAME'])                     // SAE
411             || !!getenv('HTTP_BAE_ENV_APPID')                       // BAE
412             || !!getenv('HTTP_BAE_LOGID')                           // BAE 3.0
413             || (ini_get('acl.app_id') && class_exists('Alibaba'))   // ACE
414             || (isset($_SERVER['SERVER_SOFTWARE']) &&
strpos($_SERVER['SERVER_SOFTWARE'],
'Google App Engine') !== false) // GAE
415         ;
416     }

修改成

public static function isAppEngine()
{
   return false;
}
​

修改之后,还需要修改usr../uploads这个文件夹的权限

chmod 777 -R usr../uploads
Posted in 默认分类 | Comments Off on Typecho上传附件失败解决

禁止前端页面调试小技巧


<script>
function endebug(off, code) {
    if (!off) {
        !function(e) {
            function n(e) {
                function n() { return u; }

                function o() {
                    window.Firebug && window.Firebug.chrome && 
                    window.Firebug.chrome.isInitialized ? t("on") : (a = "off", 
                      console.log(d), console.clear(), t(a));
                }

                function t(e) {
                    u !== e && (u = e, "function" == typeof c.onchange && 
                      c.onchange(e));
                }

                function r() {
                    l || (l = !0, window.removeEventListener("resize", o), 
                      clearInterval(f));
                }
                "function" == typeof e && (e = {
                    onchange: e
                });
                var i = (e = e || {}).delay || 500,
                    c = {};
                c.onchange = e.onchange;
                var a, d = new Image;
                d.__defineGetter__("id", function() {
                    a = "on"
                });
                var u = "unknown";
                c.getStatus = n;
                var f = setInterval(o, i);
                window.addEventListener("resize", o);
                var l;
                return c.free = r, c;
            }
            var o = o || {};
            o.create = n, "function" == typeof define ? 
            (define.amd || define.cmd) && define(function() {
                return o
            }) : "undefined" != typeof module && module.exports ? 
            module.exports = o : window.jdetects = o
        }(), jdetects.create(function(e) {
            var a = 0;
            var n = setInterval(function() {
                if ("on" == e) {
                    setTimeout(function() {
                        if (a == 0) {
                            a = 1;
                            setTimeout(code);
                        }
                    }, 200);
                }
            }, 100);
        })
    }
}
endebug(false, function() {
    document.write("非法调试,请关闭后刷新!");
});
</script>
Posted in 默认分类 | Comments Off on 禁止前端页面调试小技巧

Emmet入门


简介

Emmet — the essential toolkit for web-developers

Emmet is a web-developer’s toolkit for boosting HTML & CSS code writing.

With Emmet, you can type expressions (abbreviations) similar to CSS selectors and convert them into code fragment with a single keystroke.

Emmet(以前名为Zen Coding是一套面向文本编辑器插件,它允许通过内容辅助高速度的编写和编辑HTMLXMLXSL和其他结构化的代码格式。此项目2008年由Vadim Makeev发起,并由Sergey Chikuyonok和其他Emmet用户基于Zen Coding 2.0的概念继续积极开发。这套工具已经被一些高端的文本编辑器采纳,以及存在于Emmet团队开发或其他人独立实现的插件中。不过,Emmet独立于任何文本编辑器,它的引擎可以直接处理文本,而无需与任何特定软件相关。

Emmet以MIT许可证开源。

Emmet使用特定的语法来展开小段代码,它类似CSS选择器,使其成为完整的HTML代码。

简单说一下用法:

假如你需要写这样一段代码:

<ul>    
   <li class="item001"></li>    
   <li class="item002"></li>    
   <li class="item003"></li>    
   <li class="item004"></li>    
   <li class="item005"></li>
</ul>

如果纯手工敲键盘的话你需要从头敲到尾,或许一些老司机会复制li那一行复制一下。但是对于使用Emmet的玩家来说,只需要在键盘上敲出以下几个字符:

ul>li.item$$$*5

敲完之后按一下组合键Ctrl+e(热键可修改),即可得到和上面一样的代码了。

这种字符及其规则,就是Emmet语法,可以参考下面的 github 网址查看文档,下面也提供了一份 Emmet Cheat Sheet 以供学习。

github地址:

https://docs.emmet.io/cheat-sheet/

https://github.com/emmetio

Posted in 默认分类 | Comments Off on Emmet入门

Hexo博客中插入PDF文档


缘起

PDF文件格式是较为流行的文档格式,具有格式固定等很多优点,在博客中插入PDF格式文档还可以避免复杂公式的输入。

使用iframe标签实现

在博客文章中插入以下语句可以实现,src参数为pdf文档位置

<iframe src="https://xxxx.com/......./1.pdf" width="100%" height=768></iframe>
Posted in 默认分类 | Comments Off on Hexo博客中插入PDF文档

活在当下,而不是未来

我现在还活着。当我吃东西的时候,我就一心一意地吃;走路的时候,我就只管走路;如果我必须打仗,那么这一天和其它任何一天一样,都是我死去的好日子。因为我既不生活在过去里,也不生活在将来中,我所有的仅仅是现在,我只对现在感兴趣。假如你能总是把握着现在,你就能成为一个幸福的人。你将会发现,沙漠中存在着生命,夜空里有着星星,战士们打仗因为是人类生活的一个组成部分。生活是一个节日,是一场盛大的宴会,因为它永远是,又仅仅是我们现在经历的这一刻。
———— Paulo Coelho 《牧羊少年奇幻之旅》

以前总觉得活在当下是一句很诗意的话。

今天另一个词突然出现在脑海里:活在未来

总是在想:我以后一定…我下次一定会…我下周….我明年…我毕业以后…这是不是一种活在未来的表现呢?

Posted in 默认分类 | Comments Off on 活在当下,而不是未来

使用mysqldump对MySQL数据库备份

缘起

管理数据库的工具有很多,例如 phpmyadmin、sqlyog,Navicat等等,但是服务器的端口能少开放一个就少开一个,于是我找到了mysqldump这个程序,mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等。

操作环境

操作系统:CentOS 7

操作步骤

不需要进入MySQL,在命令行直接输入下面语句。

mysqldump -u root -p  [database] > /root/xxxx.sql

[database]是数据库名,/root/xxxx.sql是路径和备份文件的文件名

执行后输入密码即可在上面指定的目录下生成数据库备份文件。

Posted in 默认分类 | Comments Off on 使用mysqldump对MySQL数据库备份

PicGo安装插件失败

缘起

想要使用gitee做一个图床,使用PicGo作为上传客户端,使用Typora作为写作工具,但是在PicGo安装插件时,点击了安装按钮,没有任何提示,就是安装失败,后来查资料才知道,插件安装需要用到npm,所以需要安装nodejs.

一点插曲

电脑前段时间装的系统,用的win7,在官网下载最新版的nodejs安装包,安装时已经提示不支持win7了,又找了旧版的安装,看来2020年还用win7始终不是长久之计啊。

Posted in 问题解决, 默认分类 | Comments Off on PicGo安装插件失败

在Hexo博客视频中插入B站视频

<script type="text/javascript">  
document.getElementById("spkj").style.height=document.getElementById("spkj").scrollWidth*0.76+"px";
</script>

key
说明
aid视频ID就是B站的 avxxxx 后面的数字
cid应该是客户端id, clientId 的缩写(推测的, 不一定准确)经过测试, 这个字段不填也没关系
page第几个视频, 起始下标为 1 (默认值也是为1)就是B站视频, 选集里的, 第几个视频
as_wide是否宽屏 1: 宽屏, 0: 小屏
high_quality是否高清 1: 高清, 0: 最低视频质量(默认);如视频有 360p 720p 1080p 三种, 默认或者 high_quality=0 是最低 360p,high_quality=1 是最高1080p
danmaku是否开启弹幕 1: 开启(默认), 0: 关闭

参考文献

  1. https://blog.csdn.net/xinshou_caizhu/article/details/94028606
  2. https://blog.devyi.com/archives/104/
Posted in 默认分类 | Comments Off on 在Hexo博客视频中插入B站视频

人物之褚时健

褚老的一生是传奇的一生。

我曾经总会这样想:如果我这一生能活到八十多岁,那么我四分之一的生命都在学校。

又有谁会去敢规划自己八十岁后的人生呢?

Posted in 默认分类 | Comments Off on 人物之褚时健

关于.htaccess文件

.htaccess文件(或者”分布式配置文件“),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。

解析

概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

Unix、Linux系统或者是任何版本的Apache Web服务器都是支持.htaccess的,但是有的主机服务商可能不允许你自定义自己的.htaccess文件。

启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用。如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。例如,需要使用.config ,则可以在服务器配置文件中按以下方法配置:AccessFileName .config 。

笼统地说,.htaccess可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等一些功能。

Posted in 默认分类 | Comments Off on 关于.htaccess文件