【问题标题】:PHP email script just opens PHP filePHP 电子邮件脚本只打开 PHP 文件
【发布时间】:2012-12-15 02:50:09
【问题描述】:

我在 Linux 服务器上托管一个网站,运行 Ubuntu Server 11.04(32 位)。 Web 服务器是 Apache。该站点上的其中一个页面有一个表单,其中包含指向 PHP 电子邮件脚本的提交链接。表格代码:

<form id="contact_form" method="post" action="email.php">
<table>
<tr>
<td>Name:</td>
<td><input type="text" id="name" class="textbox"/></td>
</tr>
<tr>
<td>Email:</td>
<td><input type="text" id="email" class="textbox"/></td>
</tr>
</table>
<div id="message_box_header">Describe your problem:<br /></div>
<textarea class="textbox"></textarea><br />
<input type="submit" value="Submit!" id="submit" />
</form>

Linux 服务器拥有最新版本的 sendmail。我根本不了解 PHP,并且预先编写了脚本,所以我想我的问题可能就在那里。为了隐私,我用虚拟的网站/电子邮件替换了网站/电子邮件。这是email.php:

<?php
  $email = $_REQUEST['email'] ;
  $message = $_REQUEST['message'] ;

  mail( "myemail@gmail.com", "Form Data",
    $message, "From: $email" );
  header( "Location: http://mywebsite.com" );
?>

当我点击实际网站上的提交按钮时,它只是下载 email.php。

【问题讨论】:

  • 允许它下载然后打开文件。如果您看到 PHP 代码,则说明您的服务器上没有解释 PHP。所以这可能是一个配置问题,或者可能是由于某种奇怪的原因没有 PHP 的主机。
  • 网站上还有其他 PHP 吗?尽量省略末尾的?&gt;,并在末尾添加exit;
  • 旁注:使用$_POST 代替$_REQUEST 发布数据,使用$_GET 获取数据。

标签: php html linux forms apache


【解决方案1】:

确保您的服务器上实际安装了 PHP(这应该是您做的第一件事,遵循 cryptic 的说明)。

如果已安装,但问题仍然存在,请将其添加到您的 apache 配置 (.htaccess):

AddType application/x-httpd-php .php 

【讨论】:

  • 嗯。安装 PHP5 并将该行附加到 httpd.conf 并且仍然没有更改。因此,如果站点只是按原样下载脚本,那肯定是服务器的问题,而不是(必然)在脚本中?
  • 很可能是服务器问题。当您使用文本编辑器打开下载的文件时,您看到的是 PHP 代码还是 HTML?
  • 是的。这是同一个文件,'email.php'。
  • 你能在你的httpd.conf试试这个吗? SetHandler application/x-httpd-php另外,编辑httpd.conf时别忘了重启Apache
  • 对。那次重启修复了它。感谢您的帮助!
【解决方案2】:

您应该设置输入字段的name 属性而不是id。否则不发送数据。如果正在下载文件,这是网络服务器的配置错误,而不是脚本。

【讨论】:

    【解决方案3】:

    通过运行以下命令更新您的包管理器:

    apt-get update
    

    并通过运行以下命令安装mod_fcgidphp5-cgi

    apt-get install libapache2-mod-fcgid php5-cgi
    

    mod_fcgid 将由安装程序启用,否则运行此命令以启用它:

    a2enmod fcgid
    

    现在您可以将这些预先配置的行添加到您的 apache 配置文件中:

    AddHandler fcgid-script .php
    FcgidIOTimeout 3600
    FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000 
    FcgidMaxRequestLen 52428800
    FcgidConnectTimeout 3600
    FcgidMaxProcesses 12
    FcgidOutputBufferSize 64
    FcgidProcessLifeTime 3600
    FcgidMaxRequestsPerProcess 500
    FcgidMinProcessesPerClass 0
    FcgidWrapper /usr/bin/php-cgi .php
    

    您的 apache 配置文件可能在 /etc/apache2/apache2.conf 上可用

    有关快速 cgi 处理程序的更多信息,请参阅:http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html

    【讨论】:

      猜你喜欢
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-17
      • 2012-09-12
      • 2012-01-30
      • 2011-09-16
      相关资源
      最近更新 更多