登录 注册

登录

当本站会员afflatus 在论坛张贴安装1.0.13中文版的时候出现“线程保存路径不可写” 的帖子时,我正好刚刚接触了这个问题:在我向Lunarpages.com的服务器上安装Joomla! 1.0.13 时,也遇到了这个问题,随后通过学习mawais1的帖子xklamation 等人的帖子解决了。当然,这些都是英文的。如果你喜欢阅读中文解释,那么继续读下去,实际上本文就是综合了他们的方法然后翻译成了中文。

首先澄清一点:出现Session Save Path Unwritable这个问题的根本原因不是Joomla!造成的,而是用户不明白有关设置,或者没有正确进行设置造成的。大部分人在“安装前检查”页面看到“可写”是因为空间商已经替他们设置了相关参数;而遇到这个问题的人应该感到荣幸,因为这些空间商一般都以给予客户最大的自主权为己任。大多数遇到这个问题的用户都是在使用国外的某些优质空间,如Lunarpages.com

NO path ?

 

“线程保存路径”这个词是我翻译的,Session这个词还可以理解为“进程”。我无法从技术角度来解释它的原理和功能,但是我浮浅的理解是:服务器会对每一个远程访问建立一个单独的进程,里面存储该客户端的某些信息,而这个信息不能写入数据库,只能临时保存。因此,这个“保存路径”实际上就是要求用户指定一个可以保存这些信息的“临时目录”,相当于windows系统的temp目录。

 

如果没有这个临时保存目录会怎样呢?我没有详细测试,但从我了解的资料来看,最大的问题是:用户可能在登录网站时遇到问题。也就是说,如果不需要登录,只是浏览,那么或许没有大碍;一旦会员想要登录,可能会提示“您还没有登录”,即使他已经登录过了。还有就是管理员无法登录后台,或者需要等次尝试才能登录,尽管每次输入的用户名和密码都是正确的。

看来影响还不小。解决这个问题的思路也很简单:指定一个临时目录供保存进程即可。其做法分为三种:

1、在 php.ini 中设置 Session Save Path 

早在一个月以前,本站会员juliet 就提到他通过设置php.ini的参数解决了SESSION SAVE PATH UNWRITABLE的问题

方法是:打开 php.ini 文件,搜索有无 Session Save Path 参数,如果没有就加入一行新代码:

session.save_path = w:/tmp

等号前面的是参数名称,不可以更改;后面是具体的值,请根据你的空间配置来填写,其意义是你指定的临时目录的绝对路径。

请注意:这个代码必须独占一行;代码结尾没有分号或者其他标点符号;目录名称可以是任何名字,但是你自己不要搞混了,例如总不能命名为 /admin 吧?;路径中的斜线方向是 /,即使在windows平台的服务器上也要使用这个方向。

还有一点需要提醒,建议不要把这个临时目录放在 Joomla! 的安装目录里,最好是放在 /public_html 或者 /wwwroot 目录之外。很多服务器上都有 /tmp 目录,正好符合这个要求,建议选用。

可能有些用户在一个空间里通过addon domain功能建造了多个网站,那么你可以都使用 /tmp 目录,也可以在 /tmp 目下里面为每个 Joomla! 站点建立一个进程保存目录,如 session1、session2、session3等等。

不管使用哪个目录,最重要的是:可写!

所以,如果你建了目录,设置了正确的参数,然后再次安装Joomla!时,还是被“安装前检查”提示线程保存路径不可写,那么就是因为那个目录真的“不可写”,而不是不存在。

写到这里,有些人可能着急了:我没有php.ini文件的编辑权限啊!没错,只有比较高级的服务器才会给客户提供这种权限以方便客户更灵活地设置网站运行环境。如果你在你的空间里面没有看到 php.ini 文件,请使用下面的方法之一:

2、在 .htaccess 中设置 Session Save Path

如果php是以服务器模块(Server Module)模式运行,而不是以CGI模式运行,那么可以通过编辑.htaccess这个文件来解决。

首先确保你建立了一个临时目录如 /sessions 并且设置其权限为755。这个目录最好在 /public_html 或者 /wwwroot 目录之外。

然后编辑 .htaccess 文件(如果没有就创建一个),加入以下代码:

php_value session.save_path  '/sessions'

注意这行代码实际上分为3段,每段之间以空格间隔,末尾没有分号。

如果php是以CGI模式运行,或者设置了.htaccess文件之后无效,那么可以尝试在你的Joomla!安装目录中自己新建一个 php.ini 文件,然后按照方案1来解决。不过有一点要注意:使用这个方法时,必须给每一个拥有可执行文件的目录里面都建立一个 php.ini 文件来指定Session Save Path 。是不是有点麻烦?没错,那么你就在一开始选择一个优秀的php空间吧。

对有些用户来说,上述方法可能都不行:他们没有php.ini编辑权限,也没有权限使用 .htaccess 文件(某些服务器关闭了mod_rewrite所以禁用.htaccess),那么我们还有最后一招:

3、在 configuration.php 中设置Session Save Path

既然上述两种方法都不能用,那么不要理会“线程保存路径不可写”的红色警告,继续完成Joomla!安装。

安装结束后,在Joomla!根目录(估计你没有/public_html目录之外的目录可选)下新建一个目录,如 /mytemp ,设置其权限为755。

打开Joomla!根目录下的 configuration.php 文件,找到含有 $mosConfig_absolute_path 的这一行代码,可以看到此行提供了Joomla!的绝对地址,如 /home/userme/public_html 。在其下一行插入新的代码:

session_save_path ('/home/userme/public_html/mytemp');

注意:这一行代码给出了你所指定的临时目录的绝对路径,了解绝对路径的方法就是看$mosConfig_absolute_path 的值;行末有英文分号。

这个方法存在一个弊端:如果你以后在网站后台的“全局设置”()中进行任何操作,然后点击“保存”按钮之后,这一行代码就会消失,你不得不重新编辑它。

因此,解决“Session Save Path Unwritable”问题的最佳方法是设置 php.ini 文件。如果你无法通过本文的任何一种方法来解决这个问题,不必惊慌,你忘记了最重要的一个人:你的空间提供商!他们收取了你的钞票,就有责任为你解决这个问题。

  1. 评论 (2)

  2. Add Yours

评论 (2)

这里还没有人发表评论
  1. 不叫真名算了

我也加一点刚碰到的问题和解决方法<br />Strict Standards: Accessing static property JCache::$_handler as non static in E:\xampp\htdocs\joomla\libraries\joomla\cache\cache.php on line 422<br />解决joomla Strict Standards提示:<br /><br...

我也加一点刚碰到的问题和解决方法<br />Strict Standards: Accessing static property JCache::$_handler as non static in E:\xampp\htdocs\joomla\libraries\joomla\cache\cache.php on line 422<br />解决joomla Strict Standards提示:<br /><br />1.在joomla程序根目录下找到configuration.php文件,并对其进行编辑<br /><br />2.在该文件中找到代码<br /><br />public $error_reporting = 'default';<br /><br />将其中的default更改为7<br /><br />3.保存文件即可<br /><br /><br />转载请注明出处:博客吧

阅读全文
  附件
您无权查看附件
 
  1. zhy190

解决了问题,赞

  附件
您无权查看附件
 

免费下载最新Joomla!核心中文版

扫描此二维码,立即开始下载 Joomla 3 核心中文版

付费下载汉化版扩展

付费后即可下载独家海量

Joomla! CMS 扩展汉化版

了解付费会员制度

点击这里给我发消息

了解 joomlagate.com 网站的付费会员制度