36区技术博客

typecho提交文章后出现:“指定的目录不可写”的解决办法


一、前言

前几天挪动一个网站,数据备份以后就关闭所有的访问,其他的没有挪动。等了一个星期后回去放开网站,却发现有部分的文章无法提交。

本人习惯使用typecho,所以对typecho出现的问题或多或少有些了解,但此次出现:指定的目录不可写的问题还是第一次碰到。

凭着对typecho框架的了解,经过一番排查后终有所斩获,最后成功解决该问题。记录下来,供大家参考。

二、排查步骤

将typecho工程的源码放到sublime编辑器中,用全局搜索功能搜索:指定的目录不可写。非常遗憾的是,最后没有查找到该文字,也就是说这不是框架发生的bug。那么就剩下两个地方会出现运行时错误:

为了验证问题出现的地方,我们需要开启typecho框架的debug模式。开启typecho的debug模式的方法很简单,只需要找到根目录下的config.inc.php文件,在define区域中加入以下代码即可:

define('__TYPECHO_DEBUG__', TRUE);

注意:当调试完毕后,需要将改行代码注释掉,不然在网站出错的时候将会把错误抛给浏览者,造成不好的体验。

添加后,config.inc.php的部分代码如下:


/** 定义根目录 */
define('__TYPECHO_ROOT_DIR__', dirname(__FILE__));

/** 定义插件目录(相对路径) */
define('__TYPECHO_PLUGIN_DIR__', '/usr/plugins');

/** 定义模板目录(相对路径) */
define('__TYPECHO_THEME_DIR__', '/usr/themes');

/** 后台路径(相对路径) */
define('__TYPECHO_ADMIN_DIR__', '/admin/');
/** 开启debug模式 */
define('__TYPECHO_DEBUG__', TRUE);

因为php是解释运行语言,所以添加代码后无需重启环境就可以直接调试代码。

在后台操作添加文章,果然出现如下异常信息:

.../usr/plugin/Sitemap.php xxx行报错

错误日志暴露的信息和猜测的一致,sitemap插件在生成sitemap.xml的时候没有获得足够的权限,以为抛出不可写的错误。

三、解决的办法

定位到问题以后,很容易得出解决的办法。毕竟插件一开始都是好好的,不可能无缘无故失效。所以我们利用重启大法,将插件禁用后再启用,继而去后台添加文章,文章顺利添加到后台,而且没有出现任务错误。

至此,问题得到解决,希望对大家有所帮助!

本文完结!

当前页面是本站的「Baidu MIP」版。查看和发表评论请点击:完整版 »