我在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。
答案 0 :(得分:2)
确保PHP实际安装在您的服务器上(这应该是您第一件事,遵循神秘的说明)。
如果安装了,并且您仍然遇到问题,请将其添加到您的apache配置(.htaccess
):
AddType application/x-httpd-php .php
答案 1 :(得分:0)
您应该设置输入字段的name
属性,而不是id
。否则,不会发送任何数据。如果正在下载文件,则这是Web服务器的配置错误,而不是脚本。
答案 2 :(得分:0)
运行此命令更新您的包管理器:
apt-get update
并运行此命令安装mod_fcgid
和php5-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