【问题标题】:WordPress Plugin Activation triggers a Fatal ErrorWordPress 插件激活触发致命错误
【发布时间】:2019-04-27 16:02:11
【问题描述】:

我知道有很多这样的问题,但我找不到任何与我的案例相关的具体问题。要么就是这样,要么他们没有得到答复。

我编写了一个非常简单的 PHP 脚本并上传到一个 zip 文件夹中的 wordPress 站点,当我尝试激活插件时,WordPress 给我一条消息:“无法激活插件,因为它触发了一个致命错误。”它实际上并没有给我任何错误信息。我将 WP_DEBUG、WP_DEBUG_LOG 和 WP_DEBUG_DISPLAY 都设置为 true,但这些都不会在假定的错误时更新。看来我无法找出致命错误到底是什么。

我不知道如何处理这个问题。任何帮助都会很有用。

<?php

/*
Plugin Name: Denrile's Plogger
Plugin URI: http://my-awesomeness-emporium.com
description: >- a plugin to that takes the user to the Pruvan website,
after using CURL to log them in so that the redirect doesn't hit a user authentication wall.
Version: 1.0
Author: John Mauran
Author URI: http://github.com/jmauran91
License: GPL2
*/

  $j_username = "Denrile";
  $j_password = "*************";
  $login_url ="https://titlereporter.direct.pruvan.com/v2/login";
  $last_url = "https://titlereporter.direct.pruvan.com/v2/pmgr";


  function loginToJulian($url, $username, $password){
    $curl = curl_init();
    $header[0]= "Accept: application/json, text/javascript, */*; q=0.01";
    $header[] = "Cache-Control: max-age=0";
    $header[] = "Connection: keep-alive";
    $header[] = "Content-Type: application/x-www-form-urlencoded";
    $header[] = "Keep-Alive: 300";
    $header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
    $header[] = "Accept-Language: en-us,en;q=0.5";
    $verbose = fopen(dirname(__FILE__).'/errorlog.txt', 'w');
    curl_setopt($curl, CURLOPT_VERBOSE, true);
    curl_setopt($curl, CURLOPT_STDERR, $verbose);
    // Make the errors visible in a new file

    $payload_username = '"'.$username.'"';
    $payload_password = '"'.$password.'"';
    $payloadtext=urlencode('{"username":'.$payload_username.',"password":'.$payload_password.'}');
    $payload = "payload=".$payloadtext;
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
    curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookie.txt');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

    $store = curl_exec($curl);
    curl_close($store);
  }

  if(isset($_GET['prvn_login'])){
    loginToJulian($login_url, $j_username, $j_password);
    header("Location: https://titlereporter.direct.pruvan.com/v2/pmgr");
    exit();
  }
  else{

    exit();
  }

?>

这个插件的总体思路是,它将挂钩到 wordPress 网站上的 javascript 生成的 A-tag,CURL 发布到另一个站点以登录,然后重定向到该站点,希望绕过用户身份验证,因为由于 CURL,用户将已经登录。

【问题讨论】:

  • 您的wp-content 文件夹是否可写?如果是这样,您应该在其中有一个debug.log 文件。你检查了吗?

标签: php wordpress


【解决方案1】:

此代码对我有用。 但是有一个问题,为什么你添加了 exit();在 else 条件下,它正在破坏插件激活过程。

请检查并告诉我。

<?php

/*
Plugin Name: Denrile's Plogger
Plugin URI: http://my-awesomeness-emporium.com
description: >- a plugin to that takes the user to the Pruvan website,
after using CURL to log them in so that the redirect doesn't hit a user authentication wall.
Version: 1.0
Author: John Mauran
Author URI: http://github.com/jmauran91
License: GPL2
*/

  $j_username = "Denrile";
  $j_password = "*************";
  $login_url ="https://titlereporter.direct.pruvan.com/v2/login";
  $last_url = "https://titlereporter.direct.pruvan.com/v2/pmgr";


  function loginToJulian($url, $username, $password){
    $curl = curl_init();
    $header[0]= "Accept: application/json, text/javascript, */*; q=0.01";
    $header[] = "Cache-Control: max-age=0";
    $header[] = "Connection: keep-alive";
    $header[] = "Content-Type: application/x-www-form-urlencoded";
    $header[] = "Keep-Alive: 300";
    $header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
    $header[] = "Accept-Language: en-us,en;q=0.5";
    $verbose = fopen(dirname(__FILE__).'/errorlog.txt', 'w');
    curl_setopt($curl, CURLOPT_VERBOSE, true);
    curl_setopt($curl, CURLOPT_STDERR, $verbose);
    // Make the errors visible in a new file

    $payload_username = '"'.$username.'"';
    $payload_password = '"'.$password.'"';
    $payloadtext=urlencode('{"username":'.$payload_username.',"password":'.$payload_password.'}');
    $payload = "payload=".$payloadtext;
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
    curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookie.txt');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

    $store = curl_exec($curl);
    curl_close($store);
  }


  function default_wordpress_hook(){
    if(isset($_GET['prvn_login'])){
      loginToJulian($login_url, $j_username, $j_password);
      header("Location: https://titlereporter.direct.pruvan.com/v2/pmgr");
      exit();
    } else {

    }  
  }
  add_action("init","default_wordpress_hook");

?>

【讨论】:

  • 谢谢你,这行得通,虽然我不明白为什么/为什么我的行不通?
猜你喜欢
  • 2020-09-13
  • 2014-04-09
  • 2021-12-31
  • 2014-11-05
  • 2017-04-30
  • 2015-11-18
  • 1970-01-01
  • 2016-12-12
相关资源
最近更新 更多