Страница Wordpress Blank только раз [дубликат]

Для тех, кто находит это в будущем, я бы не рекомендовал использовать mail. Есть несколько ответов, которые касаются этого, но не из-за этого.

Функция PHP mail не только непрозрачна, но и полностью зависит от того, какой MTA вы используете (то есть Sendmail) для выполнения этой работы. mail ТОЛЬКО скажет вам, не удалось ли MTA принять его (т. е. Sendmail не был отправлен, когда вы пытались отправить). Он не может сказать вам, была ли почта успешной, потому что она была передана. Как таковой (как детали ответов Джона Конде), вы теперь можете возиться с журналами MTA и надеяться, что он расскажет вам об отсутствии возможности исправить его. Если вы находитесь на общем хосте или не имеете доступа к журналам MTA, вам не повезло. К сожалению, по умолчанию для большинства ванильных инсталляций для Linux обрабатывается так.

Почтовая библиотека ( PHPMailer , Zend Framework 2+ и т. д.) делает что-то очень отличное от mail. То, что они делают, это открыть сокет непосредственно на принимающем почтовом сервере, а затем отправить SMTP-почтовые команды непосредственно через этот сокет. Другими словами, класс действует как собственный MTA (обратите внимание, что вы можете сказать библиотекам использовать mail, чтобы в конечном итоге отправить почту, но я настоятельно рекомендую вам не делать этого).

Что это означает, что вы можете непосредственно видеть ответы с принимающего сервера (например, в PHPMailer вы можете включить вывод отладки ). Больше не гадать, если почта не была отправлена ​​или почему.

Если вы используете SMTP (то есть вы вызываете isSMTP()), вы можете получить подробную расшифровку протокола SMTP, используя свойство SMTPDebug.

Установите этот параметр, включив в свой скрипт такую ​​строку:

$mail->SMTPDebug = 2;

Вы также получаете преимущество лучшего интерфейса. С помощью mail вы должны настроить все свои заголовки, вложения и т. Д. С библиотекой у вас есть специальная функция для этого. Это также означает, что функция выполняет все сложные элементы (например, заголовки).

104
задан rr- 28 April 2016 в 10:26
поделиться

9 ответов

Оказывается, мое понимание сообщения об ошибке было неправильным. Я бы сказал, что у него очень плохой выбор слов. Googling around показал мне, что кто-то еще неправильно понял сообщение точно так же, как и я, - см. PHP-ошибку # 66763 .

После совершенно бесполезного «Это то, как хотели это RM». ответ на эту ошибку Майка, Тайраэль объясняет, что установка этого параметра на «-1» не означает, что предупреждение просто исчезнет. Он делает правильную вещь , т. Е. Полностью отключает заполнение переменной преступника. Оказывается, при установке значения 0 STILL заполняет данные при некоторых обстоятельствах. Расскажите о плохом дизайне! Чтобы указать PHP RFC :

Изменить always_populate_raw_post_data INI, чтобы принять три значения вместо двух.

  • -1: Поведение мастер; никогда не заселяйте $ GLOBALS [HTTP_RAW_POST_DATA]
  • 0 / off / whatever: поведение BC (заполняется, если тип содержимого не зарегистрирован или метод запроса отличен от POST)
  • 1 / on / yes / true: поведение BC (всегда заполняет $ GLOBALS [HTTP_RAW_POST_DATA])

Так что, устанавливая его на -1, вы не только избегаете предупреждения, как сообщение но он также , наконец, отключает , заполняя эту переменную, что я и хотел.

117
ответ дан rr- 21 August 2018 в 06:21
поделиться
  • 1
    tl; dr это немое предупреждение, которое появляется, даже если вы не используете то, о чем предупреждает; установить always_populate_raw_post_data на -1 – srcspider 27 April 2015 в 14:11
  • 2
    Я установил его always_populate_raw_post_data = -1. все еще теперь предупреждение о том, что и развращение ответа json – itsazzad 28 July 2015 в 12:01
  • 3
    Таким образом, на самом деле ответ заключается в том, чтобы перейти к вашему файлу php.ini и установить (или раскомментировать) always_populate_raw_post_data = -1. – John 15 April 2016 в 21:20
  • 4
    Но я действительно не понимаю. Это точно , что говорит предупреждение? To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. – Andreas 15 May 2016 в 18:50
  • 5
    @Andreas является причиной, почему он говорит, что, то есть разница между 0, которая, по-видимому, «отключена», и -1, которая ... «сильнее отключена»? → путаница → причина для этого вопроса (и ответ). – rr- 15 May 2016 в 19:43

Некоторое время, пока я не наткнулся на эту ошибку. Отправьте мой ответ всем, кто может наткнуться на эту проблему.

Ошибка означает только то, что вы отправляете пустой запрос POST. Эта ошибка обычно встречается в HTTPRequests без переданных параметров. Чтобы избежать этой ошибки, вы всегда можете добавить параметр к POST без изменения php.ini.

Нравится:

$.post(URL_HERE
    ,{addedvar : 'anycontent'}
    ,function(d){
       doAnyHere(d);
    }
    ,'json' //or 'html','text'
);
27
ответ дан Eat Ong 21 August 2018 в 06:21
поделиться
  • 1
    Это лучший ответ, который я нашел для этой проблемы! Я занимаюсь этой проблемой в течение месяца, и это заставило меня смотреть в неправильном направлении. У меня просто был пустой POST на случай аварии, и как только это было исправлено, все отлично работало! Спасибо, что спасли меня от страшной головной боли! – Craig Howell 16 May 2017 в 17:37

Для тех, кто все еще борется с этой проблемой после изменения php.init, как предполагает принятый ответ. Поскольку ошибка возникает, когда петиция ajax выполняется через POST без какого-либо параметра, все, что вам нужно сделать, это изменить метод отправки на GET.

var xhr = $.ajax({
   url:  url,
   type: "GET",
   dataType: "html",
   timeout: 500,
});

Еще один вариант, если вы хотите сохранить метод POST по какой-либо причине - добавить пустой объект JSON в ajax petititon.

var xhr = $.ajax({
   url:  url,
   type: "POST",
   data: {name:'emtpy_petition_data', value: 'empty'}
   dataType: "html",
   timeout: 500,
});
3
ответ дан Grirg 21 August 2018 в 06:21
поделиться

Если файл .htaccess не avilable, создайте его в корневой папке и пропустите эту строку кода.

Поместите это в файл .htaccess (проверено работоспособно для API)

<IfModule mod_php5.c>
    php_value always_populate_raw_post_data -1
</IfModule>
4
ответ дан Jan_V 21 August 2018 в 06:21
поделиться

Раскомментирование

always_populate_raw_post_data = -1 

в php.ini (строка # 703) и перезапуск служб APACHE помогают мне избавиться от сообщения в любом случае

; Always populate the $HTTP_RAW_POST_DATA variable. PHP's default behavior is
; to disable this feature and it will be removed in a future version.
; If post reading is disabled through enable_post_data_reading,
; $HTTP_RAW_POST_DATA is *NOT* populated.
; http://php.net/always-populate-raw-post-data
; always_populate_raw_post_data = -1
5
ответ дан Nava Bogatee 21 August 2018 в 06:21
поделиться

Если вы используете WAMP ...

, вы должны добавить или раскомментировать свойство always_populate_raw_post_data в php.ini и установить его значение в -1. В моем случае php.ini находится в:

C:\wamp64\bin\php\php5.6.25\php.ini

.. но если вы все еще получаете предупреждение (как и я)

Вы также должны установить always_populate_raw_post_data = -1 в phpForApache.ini:

C:\wamp64\bin\php\php5.6.25\phpForApache.ini

Если вы не можете найти этот файл, откройте окно браузера и перейдите к:

http://localhost/?phpinfo=1

и найдите значение файла Loaded Configuration File. В моем случае php.ini, используемый WAMP, находится в:

C:\wamp64\bin\apache\apache2.4.23\bin\php.ini (символическая ссылка на C: \ wamp64 \ bin \ php \ php5.6.25 \ phpForApache.ini)

Наконец, перезапустите WAMP (или нажмите «перезапустить все службы»)

11
ответ дан Ricardo Tribaldos 21 August 2018 в 06:21
поделиться

Я столкнулся с той же проблемой на сервере nginx (DigitalOcean) - мне нужно было войти в систему как root и изменить файл /etc/php5/fpm/php.ini.

Чтобы найти строку с always_populate_raw_post_data Сначала я запускаю grep:

grep -n 'always_populate_raw_post_data' php.ini

Это вернуло строку 704

704:;always_populate_raw_post_data = -1

. Затем просто откройте php.ini в этой строке с помощью редактора vi :

vi +704 php.ini

Удалите двоеточие, чтобы раскомментировать его и сохранить файл :wq

. Наконец, перезагрузите сервер, и ошибка исчезла.

29
ответ дан Sebastian Sulinski 21 August 2018 в 06:21
поделиться
  • 1
    Если строка прокомментирована в вашем php.ini, вы, вероятно, используете конфигурацию разработки php.ini. – BadHorsie 1 December 2015 в 14:23

Я получил это сообщение об ошибке при отправке данных из html-формы (метод Post). Все, что мне нужно было сделать, это изменить кодировку в форме от «text / plain» до «application / x-www-form-urlencoded» или «multipart / form-data». Сообщение об ошибке было очень ошибочным.

1
ответ дан Stefan Crain 21 August 2018 в 06:21
поделиться
[Д0]; always_populate_raw_post_data = -1 в php.init удалить комментарий этой строки .. always_populate_raw_post_data = -1

-1
ответ дан Tejaswi Tandel 21 August 2018 в 06:21
поделиться
  • 1
    могли бы вы объяснить?? Зачем ? Кроме того, отформатируйте / отпечатайте сообщение должным образом. – Ravi 30 December 2017 в 15:18
Другие вопросы по тегам:

Похожие вопросы: