电子邮件管道 - 工作,但电子邮件返回错误


Email Piping - working but emails return errors

我已经将电子邮件转发设置为"管道到程序"。管道似乎正在工作,因为当一封电子邮件发送到我的管道电子邮件地址时,它会返回一条未送达的消息,其中包含我的 PHP 脚本中的错误,例如:

此消息是由邮件传递软件自动创建的。

您发送的邮件无法传递给其一个或多个收件人。这是一个永久性错误。以下地址失败:

管道到|/home/badihbar/public_html/handEmlTst.php 由 badih@badihbarakat.com 生成 本地传递失败

传递尝试期间生成了以下文本:

------管道到|/home/badihbar/public_html/handEmlTst.php 由 badih@badihbarakat.com ------生成

/

home/badihbar/public_html/handEmlTst.php: 第 1 行: ?php: 没有这样的文件或目录/home/badihbar/public_html/handEmlTst.php: 第 3 行://: 是一个目录/home/badihbar/public_html/handEmlTst.php: 第 4 行://: 是一个目录/home/badihbar/public_html/handEmlTst.php:第 5 行:意外标记(' /home/badihbar/public_html/handEmlTst.php: line 5:附近的语法错误//date_default_timezone_set("Asia/Muscat"(;'

------ 这是邮件的副本,包括所有标头。 ------

显然,由于某种原因,它不识别 php 文件具有 php 脚本。我怀疑的是第一行本身。我怎么知道我应该在"#!"之后放置什么路径?

我的 php 脚本来自 handEmlTst.php:

#!/usr/lib/php -q
<?php
// include_once "Libraries/connection.class.php";
// include_once "includes/readini.inc.php";
// date_default_timezone_set("Asia/Muscat");
$starttime = date("h:i:s");
// create the connection object...
$s = ini_get("mysql.default_host");
$conn = mysql_connect($s,'badihbar_badih','letmein2013');
$db = "badihbar_supportcenter";
$attachments = array();
if(mysql_error())
{
    print "Error Occured: ".mysql_error()."<br>";
    $err = true;
}
mysql_select_db($db,$conn);
$commString  = "INSERT INTO scriptEmails (Message) VALUES ('From the Script - ".$starttime."')";
// , '".mysql_real_escape_string($email)."'
$result = mysql_query($commString, $conn);
if(mysql_error())
{
    // echo "Error Occured Saving Data: ".mysql_error()."<br>";
    // print $Conn->commString."<br>";
}

?>

我已经检查了phpinfo((的路径,但老实说不知道我在寻找什么。所以,我认为php解释器将在usr/lib/或其他东西中。我应该用我的域用户或其他东西替换 usr 吗?如果有人能在这方面提供建议,我将不胜感激。

非常感谢

毕竟我设法让它工作了。以下是让所有人都受益的步骤... :)

  1. 我使用 phpinfo(( 来获取 php 解释器的路径。我使用了"配置文件(php.ini(路径"参数值,该参数值是我的服务器的usr/lib/。
  2. 使用 #!/usr/lib/php -q 作为我的处理脚本中第一行。
  3. 这部分是我的问题。将文件上传为 ASCII,而不是二进制文件!
  4. 确保上传文件的 chmod 为 755。
  5. 在我的cpanel中将我的电子邮件地址的转发设置为"管道到程序",并输入我上传的php脚本文件的路径。

做到了。正如我提到的,我的问题是FTP应用程序以二进制而不是ASCII格式上传的文件。

谢谢大家... :)

你也可以在PHP文件的起始行使用#!/usr/local/bin/php,这是cli二进制文件而不是cgi二进制文件。

这对我有用,如果你通过了上述情况,如@Badih巴拉卡特所说