【问题标题】:session_start is producing internal server errorssession_start 产生内部服务器错误
【发布时间】:2012-02-12 11:42:52
【问题描述】:

该站点位于 IWeb 的共享托管服务上。每次脚本执行 session_start() 时,站点都会停止响应。以前可以用,代码没变。

我很确定这是一个服务器问题,因为 IWeb 正在处理我们遇到的其他一些错误,而他们就是那么无能。但是,像往常一样,他们在实际调查之前会要求提供各种证据。

所以我创建了一个仅包含以下内容的脚本:

ini_set('display_errors',1);
error_reporting(E_ALL);
session_start();

果然,如果我运行它,我会得到内部服务器错误,而 error_logs 中什么也没有。

我的问题是什么可能导致这种情况?会话文件夹的权限?我们在共享主机上,所以我们无法更改任何服务器端。

我可以告诉 IWeb 技术人员有什么可以说服他们解决问题的吗?

【问题讨论】:

  • 您需要调高错误日志级别。它有时只是在虚拟主机上默认禁用。否则很难猜。 (磁盘空间不足?)
  • and they are that incompetant - 可能是时候寻找新主机了?
  • @mario 错误报告位于 E_ALL。
  • @DaveRandom 我们的客户选择了 IWeb。我们永远不会推荐他们。
  • 这是否属于服务器故障>

标签: php session


【解决方案1】:

你可以通过函数获取会话路径

$sessionpath = session_save_path();

然后您可以显示路径上设置的权限

echo substr(sprintf('%o', fileperms($sessionpath)), -4);

通常如果是权限问题,当调用会话开始时,您会收到一条错误信息,说明访问被拒绝。

【讨论】:

  • 好吧,我将您的代码粘贴到我的测试脚本中,它显示为 0。也就是说,它显示数字零而不是什么。但没有错误。实际上 session_save_path 返回一个空字符串。
  • 奇怪,默认应该是“/tmp”。必须在您的 php.ini 中更改。 php.net/manual/en/…
  • @Iznogood 可能希望将其设置为 tmp 和公共之外的文件夹。您可以在脚本开始时以编程方式执行此操作,而不是使用带有 session_save_path() 函数的 ini,但首选 ini。
  • 嗯,我 100% 确定它的网络主机有问题。
【解决方案2】:

所以最终它确实是主机提供商。我和他们开了一张票,他们“最终”修好了。

我这边没有任何变化,所以这是服务器问题。我没有修复的详细信息,但我很确定它与 /tmp 文件夹的权限有关。

【讨论】:

    【解决方案3】:

    如果您在使用 PHP session_start() 时遇到内部服务器错误,请检查配置为 session.save_path 的文件夹中有多少文件。这是一个快速脚本:

    set_time_limit(0);
    ini_set("memory_limit","256M");
    
    $directory = session_save_path();
    $filecount = count(glob($directory . "/*"));
    
    echo $directory." file count = ".$filecount;
    

    如果那里有一堆文件(成千上万),它可能会导致偶尔的内部服务器错误,可以通过删除客户端 cookie 临时解决。在共享服务器上,无论如何最好将会话 cookie 存储在您自己的文件系统区域中,因此我使用的解决方案是更改任何启动会话或设置会话变量的脚本的 session.save_path。

    ini_set('session.save_path', dirname(__FILE__) . '/../session');
    

    【讨论】:

      【解决方案4】:

      主机提供商 IWeb 不是一个好的主机。这是一个服务器端问题,是时候寻找新的虚拟主机了。

      【讨论】:

      • 无论如何都不会有所作为 - 自己试试吧。
      • 如果<?php ?> 标签块内只有一条语句,则不需要分号。 ?> 充当一个。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      • 2019-11-29
      • 2015-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多