该网站由IWeb提供共享托管服务。每次脚本执行session_start()时,站点都停止回答。之前它正在工作,代码没有改变。
我很确定它是一个服务器问题,因为IWeb正在处理我们遇到的其他一些错误而且它们是无能的。但是,像往常一样,他们在实际调查之前会要求各种证据。
所以我创建了一个仅包含此脚本的脚本:
ini_set('display_errors',1);
error_reporting(E_ALL);
session_start();
果然,如果我运行它,我会得到内部服务器错误,而且error_logs中没有任何内容。
我的问题是什么可能导致这个?会话文件夹的权限?我们在共享主机上,所以我们无法改变任何服务器端。
我可以告诉IWeb技术人员说服他们解决这个问题吗?
答案 0 :(得分:2)
您可以使用函数
获取会话路径$sessionpath = session_save_path();
然后您可以显示路径
上设置的权限echo substr(sprintf('%o', fileperms($sessionpath)), -4);
通常如果这是一个权限问题,当调用会话启动时,您会收到一条错误信息,说明访问被拒绝。
答案 1 :(得分:0)
所以最终它确实是主机提供商。我和他们开了一张票,他们“最终”修好了。
我身边没有任何改变,所以这是一个服务器问题。我没有修复的细节,但我很确定它与/ tmp文件夹的权限有关。
答案 2 :(得分:0)
如果在使用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');
答案 3 :(得分:-2)
主机提供商IWeb不是一个好主机。这是一个服务器端问题,是时候找到新的虚拟主机了。