关键词:
【中文标题】使用 PHP 从 WordPress 插件写入文本文件【英文标题】:Write from WordPress plugin to text file with PHP 【发布时间】:2014-10-22 23:19:24 【问题描述】:我正在尝试从 WordPress 插件将日期写入文本文件。虽然这适用于单个 PHP 文件,但当我将代码添加到插件时它不会写入。 TXT 文件的权限为777
,与插件文件在同一目录下。
我做错了什么?
这是插件,我添加的行在 //log 404s to text file
块中:
<?php
/*
Plugin Name: Mail me 404 errors
Plugin URI: http://me.com
Description: A 404 status triggers an email with details.
Version: 1.0
Author: Me
Author URI: http://me.com
*/
//SENDS 404 EMAIL TO ADMIN
function email_admin($location)
// ip address
$ipaddress = $_SERVER['REMOTE_ADDR'];
if (!empty($_SERVER['X_FORWARDED_FOR']))
$X_FORWARDED_FOR = explode(',', $_SERVER['X_FORWARDED_FOR']);
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
$X_FORWARDED_FOR = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
else $ipaddress = "undefined";
if (!empty($X_FORWARDED_FOR))
$ipaddress = trim($X_FORWARDED_FOR[0]);
// site info
$blname=get_option('blogname');
$admemail = get_option('admin_email');
$honeypot = "http://www.projecthoneypot.org/ip_".$ipaddress;
// time log
$time = date("F jS Y, H:i", time()+25200);
//referrer
function current_page_url()
$page_url = 'http';
if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')
$page_url .= 's';
return $page_url.'://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
if(isset($_SESSION['referrer']))
$referrer = $_SESSION['referrer'];
elseif(isset($_SERVER['HTTP_REFERER']))
$referrer = $_SERVER['HTTP_REFERER'];
else $referrer = "undefined";
$_SESSION['referrer'] = current_page_url();
// query string
if (isset($_SERVER['QUERY_STRING']))
$string = $_SERVER['QUERY_STRING'];
else
$string = "undefined";
// request URI
if (isset($_SERVER['REQUEST_URI']) && isset($_SERVER["HTTP_HOST"]))
$request = 'http://' . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
else
$request = "undefined";
// identity
if (isset($_SERVER['REMOTE_IDENT']))
$remote = $_SERVER['REMOTE_IDENT'];
else
$remote = "undefined";
// user agent
if (isset($_SERVER['HTTP_USER_AGENT']))
$agent = $_SERVER['HTTP_USER_AGENT'];
else
$agent = "undefined";
//log 404s to txt file
$ipad = $_SERVER['REMOTE_ADDR'];
$ban = "#$time\r\n$ipad\r\n";
$file = "errors.txt";
$open = @fopen($file, "a");
$write = @fputs($open, $ban);
@fclose($open);
//log 404s to txt file
$mailhead = "MIME-Version: 1.0\r\n";
$mailhead .= "Content-type: text/plain; charset=UTF-8\r\n";
$mailhead .= 'From: "' . $blname . '" <' .$admemail. ">\r\n";
$mailsubj= $blname.': 404 error';
$mailintro = "Someone wanted to go to ".$request.", but it doesn't exist. Maybe you can have a look and see if anything needs to be fixed.\r\n";
$mailbody=
$mailintro . "\n" .
"TIME: " . $time . "\n" .
"*404: " . $request . "\n" .
"REFERRER: " . $referer . "\n" .
"QUERY STRING: " . $string . "\n" .
"REMOTE ADDRESS: " . $ipaddress . "\n" .
"REMOTE IDENTITY: " . $remote . "\n" .
"USER AGENT: " . $agent . "\n" .
"CHECK WHOIS: https://who.is/whois-ip/ip-address/". $ipaddress . "\n" .
"CHECK IP ADDRESS: " . $honeypot . "\n\n\n";
@mail($admemail,$mailsubj,$mailbody,$mailhead);
function mail_me_errors()
global $wp_query;
$location=$_SERVER['REQUEST_URI'];
if ($wp_query->is_404)
email_admin($location);
add_action('get_header', 'mail_me_errors');
?>
【问题讨论】:
您正在使用@
前缀抑制来自 fopen
和 fputs
调用的错误报告。您可以尝试从这些调用中删除@
,看看您的插件会抛出什么错误。
我找不到与此插件相关的任何错误。
【参考方案1】:
用plugin_dir_path()
将文件/wp-content/plugins/your-plugin/errors.txt
的完整路径传递给fopen
:
$file = plugin_dir_path( __FILE__ ) . '/errors.txt';
$open = fopen( $file, "a" );
以下是一个最小示例:
add_action( 'get_header', 'mail_me_errors' );
function mail_me_errors()
if ( is_404() )
email_admin( $_SERVER['REQUEST_URI'] );
function email_admin( $location )
$time = date( "F jS Y, H:i", time()+25200 );
$ban = "#$time\r\n$location\r\n";
$file = plugin_dir_path( __FILE__ ) . '/errors.txt';
$open = fopen( $file, "a" );
$write = fputs( $open, $ban );
fclose( $open );
【讨论】:
谢谢。这样就完成了工作。 比搞乱error_log
更容易,这似乎不太灵活
@JDandChips 这也可以在生产中使用。wordpress插件中的ajax错误
】wordpress插件中的ajax错误【英文标题】:ajaxerrorinwordpressplugin【发布时间】:2015-06-3011:28:36【问题描述】:我正在为wordpress编写一个插件。该插件有一个小部件,其中包含一个按钮和文本框。该按钮具有onclick事件。当该事件发... 查看详情
Wordpress:如何使用 ajax 调用来调用插件函数?
】Wordpress:如何使用ajax调用来调用插件函数?【英文标题】:Wordpress:howtocallapluginfunctionwithanajaxcall?【发布时间】:2011-02-2322:16:45【问题描述】:我正在编写一个WordpressMU插件,它包含每个帖子的链接,我想在用户单击此链接时... 查看详情
将 PHP 变量从一个插件文件传递到另一个 WordPress
】将PHP变量从一个插件文件传递到另一个WordPress【英文标题】:PassPHPVariablesfromonepluginfiletoanotherWordPress【发布时间】:2012-07-1408:56:31【问题描述】:我正在开发一个WordPress插件,但遇到了一个小障碍。我正在编写与PayPal的IPN交互... 查看详情
php从breadcrumbsnavxt插件跟踪(wordpress)中删除项目(代码片段)
从 WordPress 帖子中获取有限的纯文本摘录?
】从WordPress帖子中获取有限的纯文本摘录?【英文标题】:Getalimited,text-onlyexcerptfromaWordPresspost?【发布时间】:2011-07-1512:16:39【问题描述】:我在自己的主题模板中使用“循环”来获取来自WordPress的最后三个帖子。<?php$args=array... 查看详情
使用 WordPress 插件从 pdf 创建 jpgs
】使用WordPress插件从pdf创建jpgs【英文标题】:CreatejpgsfrompdfwithWordPressplugin【发布时间】:2015-10-1015:40:12【问题描述】:我正在开发一个插件,它可以从上传的pdf文件的每一页创建jpgs。我使用wp_handle_upload操作并检查mime类型是否... 查看详情
从 WordPress url 中删除类别和标签库 - 没有插件
】从WordPressurl中删除类别和标签库-没有插件【英文标题】:Removecategory&tagbasefromWordPressurl-withoutaplugin【发布时间】:2013-07-2120:26:04【问题描述】:我想从WordPressURL中删除类别和标签库。我遇到过其他使用插件的帖子和解决方... 查看详情
如何在 Wordpress 插件中使用 jQuery 从 Iframe 调用 Iframe?
】如何在Wordpress插件中使用jQuery从Iframe调用Iframe?【英文标题】:HowtocallIframefromanIframeusingjQueryinWordpressPlugin?【发布时间】:2019-05-2914:24:02【问题描述】:我有一个从WordpressWoocommerce商店中的iFrame调用的应用程序(WordPress插件)... 查看详情
将变量从 WordPress PHP 传递到 JavaScript
】将变量从WordPressPHP传递到JavaScript【英文标题】:PassingVariablefromWordPressPHPtoJavaScript【发布时间】:2018-01-2917:24:19【问题描述】:我正在使用两个WordPress插件-用于插入PHP代码的片段和用于插入JavaScript的脚本n样式。我的目标是获... 查看详情
如何从 wordpress 的主题选项中获取输入文本?
】如何从wordpress的主题选项中获取输入文本?【英文标题】:Howtogetinputtextfromthemeoptionsonwordpress?【发布时间】:2013-03-1006:51:49【问题描述】:我刚刚在我的theme-options.php文件中设置了一个新的输入文本选项,类似于二十一主题代... 查看详情
php在wordpress插件中使用类。请评论!(代码片段)
php的93个wordpress插件有后门
参考技术A因为93个WordPress主题和插件包含后门,从而使得攻击者可以完全控制网站。攻击者总共入侵了AccessPress的40个主题和53个插件,AccessPress是WordPress插件的开发者,用于超过360,000个活动网站。该攻击是由Jetpack的研究人员发... 查看详情
尝试从 ajax(Wordpress 插件)将 FormData 中的 Blob 发布到 php 时出现 400(错误请求)
】尝试从ajax(Wordpress插件)将FormData中的Blob发布到php时出现400(错误请求)【英文标题】:Getting400(BadRequest)whentryingtopostaBlobinFormDatatophpfromajax(WordpressPlugin)【发布时间】:2021-01-0722:11:53【问题描述】:所以请看下面的代码。constc... 查看详情
Wordpress 插件 HTML Bootstrap + PHP
】Wordpress插件HTMLBootstrap+PHP【英文标题】:WordpressPluginHTMLBootstrap+PHP【发布时间】:2020-10-0621:44:07【问题描述】:我正在创建我的第一个wordpress插件来在wp-admin-page上显示一些仪表板数据,但是当我编辑我的插件时只有我的php代码... 查看详情
php在functions.php中使用wordpress自定义更多文本(代码片段)
如何从自定义页面模板调用 WordPress 插件功能?
】如何从自定义页面模板调用WordPress插件功能?【英文标题】:HowtocallWordPresspluginfunctionfromcustompagetemplate?【发布时间】:2020-02-1109:28:52【问题描述】:我有一个处理身份验证的自定义WordPress插件。plugin-name/src/Classes/Auth.php中有一... 查看详情
php这个wordpress插件演示了如何使用wordpress提供的可拖动元文件构建自己的插件页面,需要wordpr(代码片段)
如何使用 php 在 WordPress 插件中回显 json 数据 [重复]
】如何使用php在WordPress插件中回显json数据[重复]【英文标题】:HowtoechojsondatainWordPresspluginusingphp[duplicate]【发布时间】:2020-09-0307:31:48【问题描述】:我正在创建一个Courier跟踪插件并使用他们的API获取数据。它们返回的输出是JSO... 查看详情