programing

플러그인이 활성화 중에 예기치 않은 출력의 X자를 생성했습니다(WordPress).

javamemo 2023. 3. 11. 08:34
반응형

플러그인이 활성화 중에 예기치 않은 출력의 X자를 생성했습니다(WordPress).

플러그인을 활성화할 때마다 다음 메시지가 나타납니다.

플러그인이 활성화 중에 예기치 않은 80자의 출력을 생성했습니다."헤더가 이미 전송됨" 메시지, 신디케이션 피드 문제 또는 기타 문제가 발견되면 이 플러그인을 비활성화하거나 제거하십시오.

메시지를 억제할 수 있는 유일한 방법은 활성화 함수 코드를 if 문으로 감싸는 것이었습니다(아래 스니펫을 참조해 주세요).

위에서 설명한 오류가 발생했을 때 플러그인 코드의 일부를 다음에 나타냅니다.

function myPlugin( $post ) {
    echo "Whatever is here throws an unexpected output alert when the plugin isa activated";
}
register_activation_hook( __FILE__, 'myPlugin' );

다음으로, if 스테이트먼트내의 플러그인내의 함수를 래핑 합니다.이것에 의해, 상기의 에러가 억제됩니다.

function myPlugin( $post ) {
    global $pagenow;
    if ( is_admin() && $pagenow !== 'plugins.php' ) {
        echo "No more alerts when its wrapped this way";
        }
    }
}
register_activation_hook( __FILE__, 'myPlugin' );

이 에러의 실제 원인은 무엇이며, 로직으로 플러그 인을 효과적으로 완료하려면 어떻게 해야 합니까?

이 문제를 해결할 더 좋은 방법이 있나요?

2가지 이유:

1)과 같이) 을 .echo(으)ㄹㄹㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴㄴ)

  • 하시겠습니까?admin - '사용'?- '사용'? - "사용"admin_notices★★★★★★★★★★★★★★★...
  • 메시지를 프런트 엔드로 출력하시겠습니까? - 후크가 있는 적절한 위치를 찾습니다(예:the_content ★★★★★★★★★★★★★★★★★」wp_footer★★★★★★★★★★★★★★★★★★」

  • register_activation_hookWordPress는 WordPress를 사용합니다.

2)을 하지2) 출력할 수 .php러가가발?발 생?? 이 하세요.functions.php플러그인을 활성화하면 오류가 나타납니다.

define('temp_file', ABSPATH.'/_temp_out.txt' );

add_action("activated_plugin", "activation_handler1");
function activation_handler1(){
    $cont = ob_get_contents();
    if(!empty($cont)) file_put_contents(temp_file, $cont );
}

add_action( "pre_current_active_plugins", "pre_output1" );
function pre_output1($action){
    if(is_admin() && file_exists(temp_file))
    {
        $cont= file_get_contents(temp_file);
        if(!empty($cont))
        {
            echo '<div class="error"> Error Message:' . $cont . '</div>';
            @unlink(temp_file);
        }
    }
}

같은 에러가 발생했지만, 6글자만 사용).그래서...제 경우 PHP 닫는 태그 뒤에 빈 줄이 있었습니다?>-그것도 이 에러의 원인이 됩니다.

이 문제의 원인에는 두 가지 문제가 있다고 생각합니다.첫 번째는 플러그인 액티베이션 훅이 호출되었을 때 워드프레스는 출력을 기대하지 않기 때문에 그것에 대해 불평하고 있을 수 있다고 생각합니다.둘째, 플러그인 액티베이션 훅은 워드프레스 프로그램 흐름에서 상당히 초기에 호출되기 때문에 헤더가 전송되기 전에 호출될 수 있습니다.을 합니다.header()PHP php php php php 、 PHP 。

, 인의 플러그 인의 되어 있습니다.은, 「」라고 하는 입니다.set_option()아, 아, 아, 아, 아, 아, 아, 아, 아.

같은 에러가 발생했습니다.예상치 않은 출력의 3글자가 선두가 되었습니다.제 시나리오에 있는 사람들에게 이 메시지의 또 다른 원인은 BOM을 사용하여 UTF로 인코딩된 파일 형식일 수 있습니다.

BOM 인코딩이 에러의 원인이 되어, 플러그 인이 액티브하게 되어 있는 동안, Internet Explorer 로 올바르게 렌더링 되지 않게 됩니다.

해결책은 Notepad++를 사용하여 'BOM 없이 UTF로 변환'을 선택하는 것입니다.또는 Visual Studio를 사용하는 경우 BOM 없이 UTF-8 인코딩을 변경하는 방법에 대해 설명합니다.

나는 이 문제와 오랫동안 싸웠다. 앞에 이 있기 때문에 합니다.<?php?>태그. 일단 이걸 제거하면 오류가 사라집니다.

「 」, 「 」에 대해서는 도 상정하지 주세요.GET,POST,COOKIE ★★★★★★★★★★★★★★★★★」REQUEST항상 먼저 isset() ★★★★★★★★★★★★★★★★★」empty().

저의 경우 정의되지 않은 인덱스에 의한 것입니다.디버깅 로그를 활성화하여 원인을 확인하면 쉽게 해결할 수 있습니다.

디버깅 로그를 유효하게 하는 방법을 모르는 경우는, 이러한 행을 wp-config 에 추가합니다.php:

    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_DISPLAY', true );
    define( 'WP_DEBUG_LOG', true );

wp-content에 작성된 디버깅파일에서 오류를 올바르게 확인할 수 있습니다.

경우가 요.<?php ;?>와 같이합니다.

;?>

<?php

닫힘 태그와 시작 태그 사이의 이 추가 행도 이 오류를 일으킬 수 있습니다. 간단히 해당 행/공간을 제거하십시오.

register_activation_hook을 할당하는 일반적인 방법은 클래스의 정적 메서드를 사용하는 것입니다.이렇게 하면 플러그인 활성화 기능 이름이 다른 플러그인과 충돌하지 않습니다.

class Foo_Plugin 
{
    public static function plugin_activation() {
        // activation logic
    }
}

이 함수는 비공개가 아닌 공용이어야 합니다.하지만 실수하기 쉬우므로 이런 오류가 발생할 경우 문제가 발생할 수 있습니다.

그런 다음 메인 플러그인 파일에 이 코드를 사용하여 활성화를 등록합니다.

register_activation_hook( __FILE__, array( 'Foo_Plugin', 'plugin_activation' ) );

메시지 「」가 됩니다.The plugin generated *X* characters of unexpected output during activation별로 도움이 안 되거나 적어도 충분하진 않아요

이 되도록, 을 「 「 」 「 」 「 」wp-config.php:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );

다음 체크합니다.wp-content/debug.log에러 발생원에 관한 자세한 에러 메시지를 참조해 주세요.

저도 같은 문제가 있었어요.파일의 선두에 새로운 행이 있는 것을 알 수 있었습니다.그래서 지웠더니 오류가 없어졌어요.파일의 선두에 있는 새로운 행을 삭제해 주세요.그게 도움이 될 거야

초급 개발자의 경우 "?" 뒤에 공백 줄 바꿈이 있어야 합니다.>" php 태그를 닫습니다.이 후 빈 줄 바꿈을 모두 삭제해 보십시오.

이 문제는 여분의 공백을 제거함으로써 해결할 수 있습니다.나는 이 문제를 내 코드에 맞게 해결했다.Adove Dreamweaver에서는 여분의 흰 공간을 쉽게 제거할 수 있습니다.

먼저 편집 -> 검색 및 치환합니다.또는 Ctrl+F를 누릅니다."option" 섹션에서 "Use Regular Expression" 버튼을 선택합니다.

아래 코드를 "find" 필드에 입력합니다.

[\r\n]{2,}

아래 코드로 "바꾸기" 필드에 입력합니다.

\n

이제 "모두 바꾸기" 버튼을 클릭합니다.효과가 있기를 바랍니다.

같은 문제가 있어서 코드를 삭제하려고 했지만 같은 문제가 발생했어요.

저에게 진정한 해결책은 다음과 같습니다.

  1. 플러그인의 헤더가 포함된 파일의 마지막 부분에서 php ?>를 닫으면 문제가 해결됩니다.
  2. 플러그인의 헤더를 포함한 플러그인 파일의 마지막에 php를 닫은 후에 여분의 행을 삭제합니다.>

내 플러그인 파일은 69행에서 끝났고 마지막 php 코드 뒤에 7개의 공백이 더 있어 에디터에서는 파일이 66까지였고 69행까지 추가 행을 삭제했을 때 오류는 "The plugin generated 7 characters of unexpected..."였습니다.

감사해요.

플러그인에서 예기치 않은 출력 오류에 대한 첫 번째 확인 체크리스트입니다.

  1. 닫는 php 태그를 제거합니다.?>플러그인의 모든 php 파일에 있습니다.
  2. php 태그 앞에 빈 공간 제거<?php
  3. 기능/훅에 에코 콘텐츠를 넣지 않도록 합니다.그 이외의 경우는, 필요에 따라서 버퍼를 청소합니다.

자세한 내용은 이쪽에서 확인하시기 바랍니다.

<?php
     include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); 
            If (is_plugin_active('wshops/init.php'))
            { 
               //Run your plugin includes files or functions
            }

init php 파일에 있습니다.

플러그인을 활성화할 때도 이 문제가 발생하였습니다.

플러그인이 활성화하는 동안 예기치 않은 출력 1자를 생성했습니다."헤더가 이미 전송됨" 메시지, 신디케이션 피드 문제 또는 기타 문제가 발견되면 이 플러그인을 비활성화하거나 제거하십시오.

일반적으로 이 문제는 첫 번째 태그 앞에 공백이나 새로운 행이 있기 때문에 발생합니다.이것들을 제거하자 오류가 사라졌습니다.

플러그인 오류가 사라졌습니다.

문제는 메인 php 파일에서 파일 끝에 javascript 함수를 추가했다는 것입니다.워드프레스 훅은 헤드 요소의 기능인 것 같습니다.저는 그 함수를 자바 스크립트 파일로 외부화했습니다.

이전:

<?php
/**
* Plugin Name: yyy
* Description: yyy
* Author: yyy
* Author URI: yyy
* Version: yyy
*/

/* many functions here */


function insert_in_header() {
    echo '<script type="text/javascript">',
    "perform_redirection(", '"', get_option('root'), '"', ", ", '"', get_option('redirect_to'), '");',
    '</script>';
}
add_action('wp_head', 'insert_in_header');
?>
<--! PROBLEMS HERE-->
<script type = "text/javascript">
    function perform_redirections(root, redirectionLink) {
      // code here
    }
</script>

그 후:

<?php
/**
* Plugin Name: yyy
* Description: yyy
* Author: yyy
* Author URI: yyy
* Version: yyy
*/

/* many functions here */

function insert_in_header() {
    // in headscripts.js i put the perform_redirection function 
    echo '<script type="text/javascript" src="', plugins_url('js/headscripts.js', __FILE__ ), '">  </script>';
    echo '<script type="text/javascript">',
    "perform_redirection(", '"', get_option('root'), '"', ", ", '"', get_option('redirect_to'), '");',
    '</script>';
}
add_action('wp_head', 'insert_in_header');
?>

디버깅 중에 삼켜지고 검출되지 않는 오류가 있었습니다.

에서 이 글의 하면 다음과 같습니다.output도 그렇다

$unexpectedOutput= ob_get_contents();

이 기능을 사용할 수 있게 되었습니다.이 기능을 에코하거나 디버깅 중에 검사하여 무엇이 잘못되었는지 확인할 수 있습니다.저에게는 데이터베이스 스크립트가 있는 프롤렘이었습니다.

여기에 이미지 설명 입력

아래 기사의 대변

https://www.toddlahman.com/the-plugin-generated-x-characters-of-unexpected-output-during-activation/

액티베이션훅으로 호출하고 있는 기능을 정지시켜 주세요.

메모장에서 PHP 파일을 열고 ANSI 인코딩으로 저장하면 효과가 있었습니다.나중에 Visual Studio Code에 저장해도 문제가 발생하지 않았습니다.

토드 덕분에

모든 답을 시도해 보았지만 여전히 부족했던 제 문제를 알게 되었습니다. 이 모든 답변과는 다른 문제였습니다.

기본적으로 MAMP 서버의 오류 로그에서 예기치 않은 문자가 생성되었습니다. 또는 워드프레스 설치 로그에 설치 오류 는 Wordpress를 사용해도 마찬가지입니다WP_DEBUG,WP_DEBUG_DISPLAY ★★★★★★★★★★★★★★★★★」display_errors = On.ini로 합니다.

에러의 을 알았기 에, 더 , 나의 「음」의 「음」의 「음」의 「음」의 「음」에 에러가 몇개」의 을 알 수 있었습니다.php_error.log에 있습니다.MAMP/logs/php/php_error.log

오류를 수정하고 활성화 시 워드프레스 메시지가 사라졌습니다.

저도 같은 문제가 있어서 방금 개인 기능을 정적 기능으로 변경했는데 해결되었습니다.

private function db_setup() { ....

로.

static function db_setup() { ....

이게 도움이 됐으면 좋겠는데...

에는 시작 했습니다.<?php입니다.

제 경우 __constructure() 안에 있는 var_dump를 삭제하는 것을 잊었습니다.삭제만 하면 경고가 더 이상 나타나지 않습니다.

언급URL : https://stackoverflow.com/questions/4074477/the-plugin-generated-x-characters-of-unexpected-output-during-activation-wordpr

반응형