Как я могу помешать PHP возвращать заголовки при выполнении из командной строки? - PullRequest
6 голосов
/ 14 марта 2010

Это может быть смешной вопрос, но это беспокоило меня некоторое время. У меня есть пересылка почты по сценарию PHP, он получает отлично, однако у меня сразу же высылается следующая ошибка:

A message that you sent could not be delivered to one or more of its recipients. This is a permanent error. The following address(es) failed:

  pipe to |/home/[webroot]/public_html/external/mobile/email.php
    generated by mobile@[mydomain]

The following text was generated during the delivery attempt:

X-Powered-By: PHP/5.2.13 
Content-type: text/html

Как видите, exim считает ответ заголовка ошибкой из скрипта, который у меня есть. Сценарий может получить электронное письмо от php: // stdin , но exim быстро отвечает с ошибкой.

Plus

  • Он работает с консоли, а не с Apache, поэтому HTAccess или настройка Apache, скорее всего, ничего не сделают.
  • Я не могу найти решение, или кто-то с той же проблемой.

Итак, мой вопрос: как мне избавиться от этих двух заголовков?

Спасибо, ~ Jonny

Редактировать, Источник:

    #!/usr/bin/php
<?php
    $fd = fopen("php://stdin", "r");
        $email = "";
        while (!feof($fd)) {
         $email .= fread($fd, 1024);
        }
        fclose($fd);

        $dat = fopen(dirname(__FILE__).'/test.txt', 'w');
        fwrite($dat, $email);
        fclose($dat);

Ответы [ 2 ]

15 голосов
/ 14 марта 2010

похоже, что вы запускаете php-cgi, а вам нужен php-cli (просто "php"). Запустите php -v, чтобы убедиться. Если дело касается cgi, попробуйте опцию "-q".

1 голос
/ 15 сентября 2015

Была такая же проблема. Мои хозяева сказали мне, что я могу использовать php-5.4-cli (обычно я использую php-5.4).

Добавление -cli сработало для меня.

...