我已经将电子邮件转发设置为"管道到程序"。管道似乎正在工作,因为当一封电子邮件发送到我的管道电子邮件地址时,它会返回一条未送达的消息,其中包含我的 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 吗?如果有人能在这方面提供建议,我将不胜感激。
非常感谢
毕竟我设法让它工作了。以下是让所有人都受益的步骤... :)
- 我使用 phpinfo(( 来获取 php 解释器的路径。我使用了"配置文件(php.ini(路径"参数值,该参数值是我的服务器的usr/lib/。
- 使用 #!/usr/lib/php -q 作为我的处理脚本中第一行。
- 这部分是我的问题。将文件上传为 ASCII,而不是二进制文件!
- 确保上传文件的 chmod 为 755。
- 在我的cpanel中将我的电子邮件地址的转发设置为"管道到程序",并输入我上传的php脚本文件的路径。
做到了。正如我提到的,我的问题是FTP应用程序以二进制而不是ASCII格式上传的文件。
谢谢大家... :)
你也可以在PHP文件的起始行使用#!/usr/local/bin/php,这是cli二进制文件而不是cgi二进制文件。
这对我有用,如果你通过了上述情况,如@Badih巴拉卡特所说