2012-10-21 78 views
0

我有一个第一PHP文件: /home/www/subdomain1.domain.tld/file.php

<?php 
    session_start(); 
    $_SESSION['foo']='bar'; 
    include "/home/www/subdomain2.domain.tld/foo2.php"; 
?> 

和/home/www/subdomain2.domain.tld /foo2.php:

<?php 
    session_start(); 
    echo $_SESSION['foo']; 
?> 

“包含”在第一个文件生成一个“500内部服务器错误”,我想这是因为会话变量不传递给包含的文件,我怎么能解决呢?

谢谢 亚历

编辑: 我必须使用会话变量,以便使用上subdomain2每个PHP文件中的这些变量。

+0

您正在运行哪个PHP版本? –

+0

@JoachimIsaksson 5.4 – BackSlash

回答

0

包含文件时,不需要使用会话。这与使用相同命名空间的所有请求是一样的。

file.php:

$foo = 'bar'; 

include 'foo2.php'; 

foo2.php

echo $foo; // returns 'bar' 
+0

我忘了说我必须在其他文件中使用这些变量,这些变量不包含在这两个文件中,所以我必须使用会话才能与subdomain2上的所有页面共享我的变量 – BackSlash

0

你不应该开始在第二个文件中的会话。由于会话是在file.php中启动的,因此foo2.php已经可用。

错误可能是因为PHP输出会话已经启动的警告。

对于调试,请将error_reporting(E_ALL); ini_set('display_errors', 1);添加到第一个PHP脚本的开头。

你应该只能够做到:

file.php

<?php 
    session_start(); 
    $_SESSION['foo']='bar'; 
    include "/home/www/subdomain2.domain.tld/foo2.php"; 

foo2.php

我有一个第一PHP文件:/家庭/网络/ subdomain1 .domain.tld/file.php

和/home/www/subdomain2.domain.tld/foo2.php:

<?php 
// session_start(); // remove, do not need this here 
echo $_SESSION['foo']; 
+0

我有错误报告默认情况下启用,我也认为它没有启用,我添加了error_reporting(E_ALL),但它只是生成500错误,没有提供任何信息。 而我试图删除第二个文件顶部的“session_start”,但它不起作用 – BackSlash

+0

检查服务器错误日志文件,那里应该有一些错误的解释。 – drew010

+0

服务器上没有日志,我在500错误出来后检查他们,我的主页/日志文件夹为空 – BackSlash