建站教程

建站教程

Products

当前位置:首页 > 建站教程 >

WordPress遇到PHP致命错误的解决办法Call to undefined function(WordPress站点出现404错误时怎么用邮件通知管理员)

GG网络技术分享 2025-03-18 16:14 0


WordPress遇到PHP致命错误的解决办法Call to undefined function

搬主题在进行站点维护WordPress站点的时候发现日志中经常出现一个错误:PHP Fatal error: Uncaught Error: Call to undefined function get_header().....等,也就是php的致命错误。直接翻译就是访问时得到调用未定义函数的错误。如何进行解决及修复呢?这里搬主题就给大家分享一下解决方案。

原文链接:WordPress遇到PHP致命错误的解决办法“PHP Fatal error: Uncaught Error: Call to undefined function get_header()” - 搬主题

什么是调用未定义函数错误?

这是一个直接针对主题的致命错误,也就是你安装了WordPress主题的话,他们会收到一个指向你的主题目录的URL。好吧,有很多方法可以获得这些信息。让我用一个例子来解释。大多数主题包括JavaScript文件、CSS和URL的链接。

垃圾爬虫或者黑客会向流行的WordPress主题文件如index.php或header.php发送请求。这样一来,请求文件就会将安全隐患泄露,这是一个主要的攻击。这也引发了调用未定义函数错误。比如很多时候一些黑客直接攻击你的wp-login.php文件,当然你实际也可以轻松地修复它。

换句话说,你可以说当一个用户请求header.php文件时,任何重要的函数如exc_url()都是不可用的,因为它是在WordPress之外。或者这种情况的发生是因为WordPress核心没有被加载,加载的是模板文件。

这可能是由于垃圾爬虫和取决于你的主题,它是如何编码的,这可能是由于不好的操作或脱离上下文执行的代码。

检查网站是否受到攻击?

首先,你需要检查你的网站是否有受到攻击。要检查这个错误,请看错误日志。比如说。发现的错误类似如下

[STDERR] PHP Fatal error: Uncaught Error: Call to undefined function get_header() in /www/www.banzhuti.com/wwwroot/wp-content/themes/qux/index.php:2

如果你的网站出现这种类型的错误,这意味着你的网站被垃圾爬虫或黑客盯上或攻击了。你可以看到很多类型的这类错误。在这个例子中,你可以看到index.php,404.php,和header.php。经过研究和从来源得到的评论,很多人在WordPress文件中看到这种错误,而不是例子。

  • 查看这些: /archive.php
  • /Wp-includes/rss-functions.php
  • ...各种主题模板文件
  • ...WP媒体库中的各种文件

从根本上说,从WordPress核心、插件或文件的直接访问会触发一个错误。为了解决这个问题,我们分享了解决调用未定义函数错误的方法,以提高你的主题的整体安全性。

问题出在哪里?

- 如果你试图登录到你的WordPress账户。
- 如果你已经更新了WordPress。
- 如果你收到这个信息;is_network_admin()错误信息或 "致命错误,未定义函数is_network_admin()"

如何修复调用未定义函数的致命错误?

解决这种类型的错误的一个最有效和最简单的方法是,如果WordPress不可用,就退出该脚本。这是一个有效的、众所周知的解决这个问题的技术。

换句话说,如果ABSPATH常数不是确定的,就退出脚本。ABSPATH在WordPress被加载时起作用。当垃圾爬虫来请求一个主题模板时,它就会给出一个空白页。

比如说:

<? php if (!defined (‘ABSPATH’) exit ;?>

你在WordPress会话期间看到过这样的代码。保护直接脚本访问的PHP安全是至关重要的。毕竟,你不需要网站上的爬虫/攻击者。

所以,要退出脚本,你需要按照给定的方式。

首先打开任何你自己的WordPress主题文件,然后在文件的顶部包括给定的一行。当你无法访问或退出脚本时,你会看到给定的代码。

<? php

if (!defined('ABSPATH')) exit;

get_header();

?>

如下效果

进阶保护

为了进一步发展,你可以通过限制目录视图来保护重要文件。让我们考虑一个例子:当你通过浏览器访问父目录时,你是否启用了目录视图。如果是的话,你会得到一个链接的文件列表,这不是好事。

要么你看到一个空白的屏幕,也许是一些其他的信息。你将需要保持你的文件安全。为了限制目录视图,你将需要创建第一个空文件index.php文件,以你想禁用的为准。

要禁止该代码,请这样做。

<!–?php // Silence is golden.</p>

<p>WordPress使用这种技术已经很长时间了,以防止黑客/攻击者。如果你在访问WordPress时遇到任何麻烦,你应该试试这个。</p>

最后总结

正如你所看到的,这里已经分享了一个简单而有效的方法来防止网页被攻击者/黑客攻击。在这个技术中,不用太专业的能力,如果你还是不清楚,那么添加一个合适的插件,以获得更好的安全性。

WordPress站点出现404错误时怎么用邮件通知管理员

这是一个比较实用的功能,当我们网站出现了错误时就邮箱通知管理员,将下面的代码添加到你所用的WordPress主题的 404.php 文件的顶端即可.

如果你的主机支持mail()函数或者设置了SMTP发送邮件,总之就是能够发送邮件就行,一会去查看你设置的WordPress站点的管理员邮箱,你就会发现404通知邮件,可能在垃圾箱哦.

实例代码如下:

mail($email, \"404 Alert: \" . $blog . \" [\" . $theme . \"]\", $message, \"From: $email\");

完整代码如下:

<?php
// WP 404 ALERTS

// set status
header(\"HTTP/1.1 404 Not Found\");
header(\"Status: 404 Not Found\");

// site info
$blog  = get_bloginfo(\'name\');
$site  = get_bloginfo(\'url\') . \'/\';
$email = get_bloginfo(\'admin_email\');

// theme info
if (!emptyempty($_COOKIE[\"nkthemeswitch\" . COOKIEHASH])) {
$theme = clean($_COOKIE[\"nkthemeswitch\" . COOKIEHASH]);
} else {
$theme_data = wp_get_theme();
$theme = clean($theme_data->Name);
}

// referrer
if (isset($_SERVER[\'HTTP_REFERER\'])) {
$referer = clean($_SERVER[\'HTTP_REFERER\']);
} else {
$referer = \"undefined\";
}
// request URI
if (isset($_SERVER[\'REQUEST_URI\']) && isset($_SERVER[\"HTTP_HOST\"])) {
$request = clean(\'http://\' . $_SERVER[\"HTTP_HOST\"] . $_SERVER[\"REQUEST_URI\"]);
} else {
$request = \"undefined\";
}
// query string
if (isset($_SERVER[\'QUERY_STRING\'])) {
$string = clean($_SERVER[\'QUERY_STRING\']);
} else {
$string = \"undefined\";
}
// IP address
if (isset($_SERVER[\'REMOTE_ADDR\'])) {
$address = clean($_SERVER[\'REMOTE_ADDR\']);
} else {
$address = \"undefined\";
}
// user agent
if (isset($_SERVER[\'HTTP_USER_AGENT\'])) {
$agent = clean($_SERVER[\'HTTP_USER_AGENT\']);
} else {
$agent = \"undefined\";
}
// identity
if (isset($_SERVER[\'REMOTE_IDENT\'])) {
$remote = clean($_SERVER[\'REMOTE_IDENT\']);
} else {
$remote = \"undefined\";
}
// log time
$time = clean(date(\"F jS Y, h:ia\", time()));

// sanitize
function clean($string) {
$string = rtrim($string);
$string = ltrim($string);
$string = htmlentities($string, ENT_QUOTES);
$string = str_replace(\"n\", \"
\", $string);

if (get_magic_quotes_gpc()) {
$string = stripslashes($string);
}
return $string;
}

$message =
\"TIME: \"            . $time    . \"n\" .
\"*404: \"            . $request . \"n\" .
\"SITE: \"            . $site    . \"n\" .
\"THEME: \"           . $theme   . \"n\" .
\"REFERRER: \"        . $referer . \"n\" .
\"QUERY STRING: \"    . $string  . \"n\" .
\"REMOTE ADDRESS: \"  . $address . \"n\" .
\"REMOTE IDENTITY: \" . $remote  . \"n\" .
\"USER AGENT: \"      . $agent   . \"nnn\";

mail($email, \"404 Alert: \" . $blog . \" [\" . $theme . \"]\", $message, \"From: $email\");
?>

希望本文所述对大家的WordPress建站有所帮助。

WordPress站点出现404错误时怎么用邮件通知管理员 (https://www.wpmee.com/) WordPress使用教程 第1张

标签:

提交需求或反馈

Demand feedback