PHP在include上丢失了变量

时间:2016-06-06 12:25:02

标签: php server host

我编写的项目在我的计算机上工作(使用XAMPP),在我的Linux服务器上(使用Apache2),两者都使用PHP7

我的朋友将在现有的1&1 Host上托管它,并使用PHP7。这是唯一不起作用的主机。

该网站的工作原理如下:index.php将包含php文件。但是包含所有变量和常量后都会丢失。这是一个很大的问题。

pageTools.php上应该有许多功能,例如head()。 因此,如果我打开一个页面,它会显示:

  

致命错误:未捕获错误:在/homepages/35/d31536471/htdocs/SoWiHome/katalog/artikel.php:101中调用未定义的函数head()堆栈跟踪:#home {35} / homepages / 35 /第101行的d31536471 / htdocs / SoWiHome / katalog / artikel.php

的index.php

<?php
define("BASE",__DIR__);
define("BASEURL", "http://".$_SERVER["SERVER_NAME"]."/".basename(__DIR__));
define("URL", BASEURL);
require BASE."/CONFIG.php";
require BASE."/pageTools.php";

ini_set("log_errors", 1);
ini_set("register_globals", 1); //Don't work. 
ini_set("error_log", __DIR__."/log.txt");

session_start();

$openURL = $_SERVER["REQUEST_URI"];
if ( strpos($openURL, "?") )
    $openURL = strtok($openURL, "?");
$aOpen = explode("/", $openURL );
$baseUrl = BASEURL;

$db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME) or die("Fehler bei der Datenbankverbindung!");
$db->query("SET CHARACTER SET 'utf8'");

global $openURL, $baseUrl, $db; //Also don't work...

if ($openURL == "" or $openURL == "/") {
    include "home.php";
    exit;
}
elseif (end($aOpen) == "admin") {
    include BASE."/admin.php";
    die;
}
elseif (file_exists(BASE."/".strtolower($aOpen[2]).'.php')) {
    include BASE."/".strtolower($aOpen[2]).'.php';
}
else {
    echo "<!--TRY: ".json_encode($aOpen)."-->";
    include "error404.php";
}

的.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /katalog
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L] 
</IfModule>

1 个答案:

答案 0 :(得分:1)

您的问题可能是PHP7中不再支持register_globals

来自PHP.net:

  

自PHP 5.3.0开始,此功能已被弃用,自PHP 5.4.0起已被删除。

     

PHP中最具争议的变化可能是PHP指令register_globals的默认值在PHP»4.2.0中从ON变为OFF。依赖于这个指令非常普遍,许多人甚至不知道它存在并假设它只是PHP的工作方式。这个页面将解释如何用这个指令编写不安全的代码,但请记住,指令本身并不是不安全的,而是它的滥用。

PHP.net - Manual page

上详细了解register_globals