如何在GoDaddy网站上正确使用session_start()

时间:2013-01-30 12:57:52

标签: php session post

修复我的问题与“已发送”的标题无关。这只是问题的症状。 问题最终成为GoDaddy 的严重问题,因为他们的文件夹丢失了。

我已经编辑了我的问题名称以包含“GoDaddy网站”,可能会帮助将来遇到同样问题的人。

Per @KennyPowers建议我打电话给Go Daddy。我最初有一个Windows托管帐户,并切换到Linux。显然,session_start()默认保存到的文件夹不会与我网站的其余部分一起迁移,并且您无法更改默认文件夹..至少在我的网站上没有。

GoDaddy取代了他们的文件夹,现在一切正常


原始问题:

我可以使用 session_start()

来帮助我

网站流程

  • page1.html 的表单 POST到page2.php
  • page2.php 对数据进行了一些处理,并提供了链接 page3.php
  • page3.php 加载时,需要的数据执行某些操作 表格

所有网页都在同一个网域上,因此我尝试使用session_start()

执行此操作

这是我尝试过的:

第2页:

<?php
// page2.php

session_start();

echo 'Welcome to page #2';

$_SESSION["guest1Last"] = $_POST["guest1Last"];
$_SESSION["guest1First"] = $_POST["guest1First"];
$_SESSION["guest1Middle"] = $_POST ["guest1Middle"];

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Title</title>
// more HTML and PHP stuff down here

第3页:

<?php
// page3.php

session_start();

echo 'Welcome to page #3<br />';


echo $_SESSION["guest1First"];  
echo $_SESSION["guest1Middle"];
echo $_SESSION["guest1Last"]; 

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
// more HTML and PHP stuff down here

这是我在第2页加载时收到的警告: (第3页同样的事情)


Warning: session_start() [function.session-start]: open(/var/chroot/home/content/08/10125908/tmp/sess_3dt4c7etqd6hr28dls0bludiv4, O_RDWR) failed: No such file or directory (2) in /home/content/08/10125908/html/_php/page2.php on line 4

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/content/08/10125908/html/_php/page2.php:4) in /home/content/08/10125908/html/_php/page2.php on line 4

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/content/08/10125908/html/_php/page2.php:4) in /home/content/08/10125908/html/_php/page2.php on line 4
Welcome to page #2





Warning: Unknown: open(/var/chroot/home/content/08/10125908/tmp/sess_3dt4c7etqd6hr28dls0bludiv4, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct () in Unknown on line 0

“标题已经发送” 部分让我觉得session_start()不在页面上的正确位置,但它位于顶部,我相信它应该是。也就是说,由于显而易见的原因,可能会出现“ 没有这样的文件或目录 ”的问题。如果有人能指出我做错的方向,我将不胜感激。

修改


<?php
session_start();
ini_set('session.save_path', '/var/chroot/home/content/08/10125908/html/tmp');
echo 'Welcome to page #1';

$_SESSION["guest1Last"] = $_POST["guest1Last"];
$_SESSION["guest1First"] = $_POST["guest1First"];
$_SESSION["guest1Middle"] = $_POST ["guest1Middle"];



?>
  • 我创建了一个文件夹tmp并赋予它所有权限
  • 我添加了ini_set('session.save_path', '/var/chroot/home/content/08/10125908/html/tmp');
  • 并尝试了ini_set('session.save_path','html / tmp');
  • 我还创建了一个文本文件 session_save_path('/home/content/04/8260904/html/tmp');保存了它 作为 php.ini 并将其上传到我的根
  • 我还用ch创建了一个文本文件 session_save_path('/home/content/04/8260904/html/tmp');保存了它 作为 php5.ini 并将其上传到我的根

我仍然得到同样的错误

 Warning: session_start() [function.session-start]: open(/var/chroot/home/content/08/10125908/tmp/sess_3659a32a50e33e5f918a9e39d70a1668, O_RDWR) failed: No such file or directory  

我没有正确设置文件夹目的地?


我的文件夹设置现在 enter image description here

Per @KennyPowers建议我打电话给Go Daddy。我最初有一个Windows托管帐户,并切换到Linux。显然该文件夹没有与我的网站的其余部分一起迁移,并且你不能更改默认文件夹..至少在我的网站上没有。

5 个答案:

答案 0 :(得分:4)

你遇到的问题是你没有tmp。第一个错误说明了这一点:

Warning: session_start() [function.session-start]: open(/var/chroot/home/content/08/10125908/tmp/sess_3dt4c7etqd6hr28dls0bludiv4, O_RDWR) failed: No such file or directory (2) in /home/content/08/10125908/html/_php/page2.php on line 4

这就是会话无法启动的原因。请参阅“ ...失败:在..

中没有此类文件或目录(2)

您需要创建/var/chroot/home/content/08/10125908/tmp/并在该目录上设置读/写权限。 您可以使用php脚本中的下一个函数来更改会话临时目标:

ini_set('session.save_path', '/session/directory/goes/here');

在此之后收到的警告告诉您有一些数据已发送回您的浏览器 - 这实际上是第一个警告文本。它将在您修复tmp目录问题后立即修复。

答案 1 :(得分:1)

PHP试图用来存储会话信息的目录不存在或不可写。

有问题的目录是:

/var/chroot/home/content/08/10125908/tmp/

此位置在PHP.ini中设置为session.save_path

您需要确保此目录存在且可由PHP运行的用户编写。

答案 2 :(得分:1)

PHP在将数据写入会话文件时遇到问题。您应该检查会话设置并验证是否在文件系统端设置了必要的权限。

Warning: session_start() [function.session-start]: open(/var/chroot/home/content/08/10125908/tmp/sess_3dt4c7etqd6hr28dls0bludiv4, O_RDWR) failed: No such file or directory (2) in /home/content/08/10125908/html/_php/page2.php on line 4

关于标头已发送错误:由于您的错误报告级别,在尝试写入会话数据时会生成警告。此自动生成的警告是已发送标头错误的触发器。 修复权限问题,它应该消失。

答案 3 :(得分:0)

您可能在session_start();之前有一些输出请检查任何文本(包括session_start();之前的空格。它应该是您文档中的第一个。

答案 4 :(得分:0)

问题是PHP会话当前无法在您的服务器上运行,并且无法设置cookie。 PHP服务器不允许会话启动,错误是你发现的方式。 该错误告诉您它无法打开所需的会话临时文件夹,因为该文件夹不存在。

请检查此链接: http://tclayson.com/2012/03/08/how-to-fix-error-warning-session_start-function-session-start-openpathtofile-o_rdwr-failed-permission-denied-13-in-pathtoscript-php-on-line-line-2/