cPanel pipe mail в PHP скрипт - PullRequest
       25

cPanel pipe mail в PHP скрипт

0 голосов
/ 05 августа 2011

Это заняло у меня несколько часов, но я наконец-то понял, как передать почту в мой PHP-скрипт с помощью cPanel X3.

Фактический скрипт синтаксического анализа - это просто тестовый скрипт, который я настраиваю, который отправляет мне электронное письмо при его выполнении.

#!/usr/local/bin/php -q
<?php
$headers = "From: test@email.com";
$to = "myemail@gmail.com";
$subject = "Recieved";
$body = "Message recieved.";
$mail = mail($to, $subject, $body, $headers);

Вышеуказанный скрипт выполняется правильно и получает данные, хотя он получает почту и отправляет обратно следующее:

This message was created automatically by mail delivery software.

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/PATH/TO/SCRIPT/parse.php
   generated by test@email.com

The following text was generated during the delivery attempt:

------ pipe to |/home/PATH/TO/SCRIPT/parse.ph
  generated by test@email.com ------

PHP Warning:  Module 'PDO' already loaded in Unknown on line 0
PHP Warning:  Module 'pdo_sqlite' already loaded in Unknown on line 0
PHP Warning:  Module 'SQLite' already loaded in Unknown on line 0
PHP Warning:  Module 'pdo_mysql' already loaded in Unknown on line 0

------ This is a copy of the message, including all the headers. ------

Return-path: <myemail@gmail.com>
Received: from mail-fx0-f44.google.com ([209.85.161.44])
       by my.server.com with esmtps (TLSv1:RC4-SHA:128)
       (Exim 4.69)
       (envelope-from <myemail@gmail.com>)
       id 1QpAdr-0008UY-MO
       for test@email.com; Thu, 04 Aug 2011 22:00:07 -0500
Received: by fxe6 with SMTP id 6so2641925fxe.3
       for <test@email.com>; Thu, 04 Aug 2011 20:00:04 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
       d=gmail.com; s=gamma;
       h=mime-version:from:date:message-id:subject:to:content-type;
       bh=gqxzpu6OEZTUs6uTT1G+NLaRvZh0HIOfcrOh1KtUuqw=;
       b=ICOQ1YpNQZKXxAB5DCguFui6aCSqg9wMDaj8S+1iuNkJQhGL8otqT8zRdRU8i+dngU
        +KjDbSPNLdt52PGLqbz4v48MKWUCeaTo/xwa4Pftix6d63x6yqwU4/Hy9ZG9dhNiVHYM
        goSQb+InqzTgw3msyWMsw75Mddwh/HK4I8fv0=
Received: by 10.204.151.216 with SMTP id d24mr532167bkw.304.1312513204131;
 Thu, 04 Aug 2011 20:00:04 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.204.23.196 with HTTP; Thu, 4 Aug 2011 19:59:44 -0700 (PDT)
From: myemail@gmail.com
Date: Thu, 4 Aug 2011 22:59:44 -0400
Message-ID: <CAHxz2PpNoNWRakeP2JoN8cdmPfz=HrYd5N2vZ4aqb9E_vLiUjw@mail.gmail.com>
Subject: Hahahahha
To: test@email.com
Content-Type: multipart/alternative; boundary=0015175dd9cc4b987d04a9b94b71

--0015175dd9cc4b987d04a9b94b71
Content-Type: text/plain; charset=ISO-8859-1

awda asd asdqwd a xzccz

--0015175dd9cc4b987d04a9b94b71
Content-Type: text/html; charset=ISO-8859-1

awda asd asdqwd a xzccz

--0015175dd9cc4b987d04a9b94b71--    

Это путь, который я использовал в cPanel:

|php -q -n /PATH/TO/SCRIPT/parse.php

Почему я все еще получаю эту ошибку с моего сервера, если выполняется скрипт?

РЕДАКТИРОВАТЬ: Я выяснил, в чем проблема.Мой файл php.ini не был правильно настроен.Было продублировано следующее:

extension=pdo.so
extension=pdo_sqlite.so
extension=sqlite.so
extension=pdo_mysql.so

Ответы [ 3 ]

2 голосов
/ 05 августа 2011

Причиной «сообщения об ошибке» является то, что MTA считает, что произошла ошибка, если исполняемая программа записала что-то на stdout или stderr (я не уверен) - это то, что делает php, когдавыводит предупреждение.

Вы можете попытаться подавить эти предупреждения, установив error_reporting:

|php -n -d error_reporting=E_ERROR /PATH/TO/SCRIPT/parse.php

Если это не сработает, попробуйте удалить все выходные данные:

|php -d display_errors=off -d display_startup_errors=off -d error_log=/dev/null -n /PATH/TO/SCRIPT/parse.php

Но в этом случае вы не увидите никаких ошибок, таких как синтаксические ошибки, которые могут быть нежелательны.

0 голосов
/ 05 августа 2011

Вышеуказанный скрипт выполняется правильно и получает данные, даже если он получает почту

? Сценарий, который вы показали, не получает электронные письма, он только отправляет их.

Почему я все еще получаю эту ошибку

Какая ошибка? Есть ошибки PHP из-за неправильной настройки, но они не мешают запуску скрипта. Это может вызывать обратное рассеяние в зависимости от MDA. Есть также недоставленное сообщение, которое является проблемой в вашей конфигурации exim.

Ваш принимающий скрипт также выйдет и закроет канал STDIN перед чтением из него. На самом деле вы должны прочитать до EOF и выйти с явным кодом возврата (0 для успеха)

0 голосов
/ 05 августа 2011

Единственная проблема, которую я вижу, это $headers = "From: test@email.com"; должно быть $headers = "From: test@email.com\r\n";

...