1

ファイルのアップロードで問題が発生しました。以下のコードは、いずれにせよ何かをエコーするはずです。しかし、フォームを送信した後、メールは送信されますが、メッセージがエコーされません。誰でもこの問題を解決できますか?

if(!empty($_FILES['file'])){

    if ( ! function_exists( 'wp_handle_upload' ) ) require_once( ABSPATH . '/wp-admin/includes/file.php' );
            
                        $uploadedfile = $_FILES['file'];
                        $upload_overrides = array( 'test_form' => false );
                        $movefile = wp_handle_upload( $uploadedfile, $upload_overrides );
                        if ( $movefile ) {
                            echo "File is valid, and was successfully uploaded.\n";
                            var_dump($movefile);
                        } else {
                            echo "Possible file upload attack!\n";
                        }
                    wp_mail($emailTo, $subject, $body, $headers, $attachments);
            #$hasError = true;
    }   

更新
コードを少し変更しました。次のようになります。

if (!function_exists('wp_handle_upload'))
{ 
     require_once( ABSPATH . '/wp-admin/includes/file.php' );
}
    
$uploadedfile = $_FILES['attachments'];
$upload_overrides = array( 'test_form' => false );
$movefile = wp_handle_upload( $uploadedfile, $upload_overrides );
$attachments = $movefile;
if ( $movefile ) {
    echo "File is valid, and was successfully uploaded.\n";
        #var_dump($movefile);
} else {
    echo "Possible file upload attack!\n";
}
wp_mail($emailTo, $subject, $body, $headers, $attachments);   

しかし、代わりにこのエラーが発生します

ファイルは有効で、正常にアップロードされました。メッセージ「ファイルにアクセスできませんでした: ファイルが空です。もっと実質的なものをアップロードしてください。このエラーは、php.ini でアップロードが無効になっていること、または post_max_size が php.ini で upload_max_filesize よりも小さいと定義されていることによっても発生する可能性があります。

この問題を解決するために私が試みたこと

  • アップロード制限の変更は役に立ちませんでした (これは cpanel でのみ行うことができ、これらの設定はサーバーの管理者によって構成されます)
  • 追加の php.ini ファイルをアップロードして制限を引き上げても、どちらも役に立ちませんでした
4

2 に答える 2

1
if (!function_exists('wp_handle_upload'))
{ 
     require_once( ABSPATH . '/wp-admin/includes/file.php' );
}

$uploadedfile = $_FILES['attachments'];
$upload_overrides = array( 'test_form' => false );
$movefile = wp_handle_upload( $uploadedfile, $upload_overrides );
$attachments = $movefile;
if ( empty($movefile['error']) ) {
    echo "File is valid, and was successfully uploaded.\n";
    wp_mail($emailTo, $subject, $body, $headers, $attachments['file']); 
} else {
    echo "Possible file upload attack!\n";
}  

$attachments返されるのは、ファイル、URL、およびタイプを含む配列です。添付ファイルのみが必要です。

于 2014-05-24T15:16:54.720 に答える
0

電子メールを送信する前にスクリプトを停止してみてください

if(!empty($_FILES['file'])){

if ( ! function_exists( 'wp_handle_upload' ) ) require_once( ABSPATH . '/wp-admin/includes/file.php' );

                    $uploadedfile = $_FILES['file'];
                    $upload_overrides = array( 'test_form' => false );
                    $movefile = wp_handle_upload( $uploadedfile, $upload_overrides );
                    if ( $movefile ) {
                        echo "File is valid, and was successfully uploaded.\n";
                        var_dump($movefile);
                        exit();
                    } else {
                        echo "Possible file upload attack!\n";
                        exit();
                    }
                wp_mail($emailTo, $subject, $body, $headers, $attachments);
        #$hasError = true;
}

エラー表示があるかどうかを確認します

于 2014-05-24T14:20:08.347 に答える