我编写的项目在我的计算机上工作(使用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>
答案 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的工作方式。这个页面将解释如何用这个指令编写不安全的代码,但请记住,指令本身并不是不安全的,而是它的滥用。
register_globals