2009-12-30 72 views
2

我正在设计一个网站在php.After完成后,我上传的东西在服务器上。 该页面在localhost中正常工作。但上传后,该页面甚至没有加载。 在每一页的顶部,我都包含一个名为startsession.php的页面。这个页面的内容如下:PHP会话不能在服务器上工作

  session_start(); 
      header("Pragma: no-cache"); 
      header("Cache-Control: no-cache, must-revalidate"); 
      header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); 

如果我删除session_start,它工作正常。错误的详细信息如下:

页中出错---未知

行没有在其中出现错误--- 0

详细的错误---未知():打开(/ tmp/sess_723d94fdc8ae3569b1a641fd8799ece9,O_RDWR)失败:没有这样的文件或目录(2)

错误代码--- 2。

请帮我

回答

1

确保/ tmp /存在,并且服务器有写入权限。

如果这些都不起作用,请尝试清除/ tmp /。

7

检查并确保运行Web服务器的用户可以写入路径(/ tmp),因为这可能是权限问题。此外,您还需要使用header()函数使用在session_start前,如文档中指出:

http://php.net/manual/en/function.session-start.php

由于在session_start可以实际发送的HTTP标头。另外,总是100%确定你使用:

的error_reporting(E_ALL)

+0

@Kristopher:+1对于一个很好的解释。你还可以告诉,在Windows上的PHP保存其会话数据的目录,如/ tmp/in linux? – gameover 2009-12-30 06:28:04

+0

header()函数的放置位置不需要在session_start()之前。我过去在session_start()之后使用了header()函数,没有任何问题。 – KramerC 2009-12-30 06:33:58

+0

@gameover你可以用这个来获取当前会话目录: http://www.php.net/manual/en/session.configuration.php#ini.session.save-path @Kramer_Cambell谢谢,我也使用了session_start()而没有问题,但是文档明确说它会“发送”这些头文件,尽管我怀疑它实际上使用了header()或者缓存了更改,直到您输出为止。 – 2009-12-30 07:02:08

2

您可以使用自己的目录,会话保存。

将以下代码放在session_start()之上;码。

$sessdir = dirname(dirname(__FILE__)).'/session_dir'; 
ini_set('session.save_path', $sessdir); 

享受!!!!!!!!!!

0

我有一个不同的问题 - 没有错误,但在Linux上安装php/apache后会话不工作。我花了数小时研究这个问题,并最终通过简单地删除/ tmp的内容来解决问题。

感谢KramerC

+0

像删除所有内容? – 2016-03-17 07:56:47