PHP 运行 在某些目录中,但在其他目录中不存在
PHP Running in some directories but not others
我有几个简单的 html 网站,其中包含通过 PHP 发送电子邮件的联系表。他们都很好用,没有任何问题。我正在尝试使用相同的联系表单 PHP 脚本构建另一个网站。但是,当用户提交表单时,他们没有收到成功消息,而是收到 "internal server error" 消息。 PHP 脚本是相同的(验证码密钥除外)。 HTML 是相同的(除了验证码键)和一些 css 样式。
下面是 HTML:
<form action="scripts/contact.php" method="post" target="resultMsg" style="width:300px; margin:auto;">
<input class="formInput" type="text" name="name" id="name" placeholder="Name"/>
<br/><br/>
<input class="formInput" type="text" name="email" id="email" placeholder="Email"/>
<br/><br/>
<textarea class="formInput" name="message" id="message" placeholder="Message"></textarea>
<br/><br/>
<div style="margin:auto;width:fit-content">
<div class="g-recaptcha" data-sitekey="xxxxxxxxxxxxxxxx"></div>
</div>
<br/><br/>
<input class="send" type="submit" value="Send"/>
</form>
<br /><iframe name="resultMsg" id="resultMsg" scrolling="no" style="border:0; height:30px; width:100%"></iframe>
下面是 scripts/contact.php 文件中的 PHP 代码:
<?php
if(isset($_POST['g-recaptcha-response'])){
$captcha=$_POST['g-recaptcha-response'];
}
if(!$captcha){
echo("<p style='color:white; width:100%; text-align:center;'>Error: Please check the captcha box.</p>");
exit;
}
$secretKey = "xxxxxxxxxxxxxxxxxxxxxxxx";
$ip = $_SERVER['REMOTE_ADDR'];
$url = 'https://www.google.com/recaptcha/api/siteverify?secret=' . urlencode($secretKey) . '&response=' . urlencode($captcha);
$response = file_get_contents($url);
$responseKeys = json_decode($response,true);
if($responseKeys["success"]) {
$myemail = "myemail@ymail.com";
$subject = "Contact Form Submission";
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$sendMessage = "CONTACT FORM SUBMISSION
NAME:
$name
EMAIL ADDRESS:
$email
MESSAGE:
$message";
mail($myemail, $subject, $sendMessage);
echo("<p style='color:white; width:100%; text-align:center;'>Thank you for your email!</p>");
} else {
echo("<p style='color:white; width:100%; text-align:center;'>Error: message not sent, please refresh the browser.</p>");
}
exit();
?>
上周我遇到了这个问题,但托管公司将 AddHandler application/x-httpd-ea-php56 .php
添加到 htaccess 文件并修复了它。出于某种原因,他们还在整个网站目录中添加了额外的 htaccess 文件。然后我想我可能不小心删除或更改了一些 htaccess 文件,现在它不再工作了。在哪个 htaccess 文件中究竟需要什么才能使其正常工作?任何想法为什么它不再起作用?谢谢
事实证明问题很简单,就是 PHP 脚本的文件权限不正确。将脚本的权限更改为 644 解决了问题,不再 "internal server error".
我有几个简单的 html 网站,其中包含通过 PHP 发送电子邮件的联系表。他们都很好用,没有任何问题。我正在尝试使用相同的联系表单 PHP 脚本构建另一个网站。但是,当用户提交表单时,他们没有收到成功消息,而是收到 "internal server error" 消息。 PHP 脚本是相同的(验证码密钥除外)。 HTML 是相同的(除了验证码键)和一些 css 样式。
下面是 HTML:
<form action="scripts/contact.php" method="post" target="resultMsg" style="width:300px; margin:auto;">
<input class="formInput" type="text" name="name" id="name" placeholder="Name"/>
<br/><br/>
<input class="formInput" type="text" name="email" id="email" placeholder="Email"/>
<br/><br/>
<textarea class="formInput" name="message" id="message" placeholder="Message"></textarea>
<br/><br/>
<div style="margin:auto;width:fit-content">
<div class="g-recaptcha" data-sitekey="xxxxxxxxxxxxxxxx"></div>
</div>
<br/><br/>
<input class="send" type="submit" value="Send"/>
</form>
<br /><iframe name="resultMsg" id="resultMsg" scrolling="no" style="border:0; height:30px; width:100%"></iframe>
下面是 scripts/contact.php 文件中的 PHP 代码:
<?php
if(isset($_POST['g-recaptcha-response'])){
$captcha=$_POST['g-recaptcha-response'];
}
if(!$captcha){
echo("<p style='color:white; width:100%; text-align:center;'>Error: Please check the captcha box.</p>");
exit;
}
$secretKey = "xxxxxxxxxxxxxxxxxxxxxxxx";
$ip = $_SERVER['REMOTE_ADDR'];
$url = 'https://www.google.com/recaptcha/api/siteverify?secret=' . urlencode($secretKey) . '&response=' . urlencode($captcha);
$response = file_get_contents($url);
$responseKeys = json_decode($response,true);
if($responseKeys["success"]) {
$myemail = "myemail@ymail.com";
$subject = "Contact Form Submission";
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$sendMessage = "CONTACT FORM SUBMISSION
NAME:
$name
EMAIL ADDRESS:
$email
MESSAGE:
$message";
mail($myemail, $subject, $sendMessage);
echo("<p style='color:white; width:100%; text-align:center;'>Thank you for your email!</p>");
} else {
echo("<p style='color:white; width:100%; text-align:center;'>Error: message not sent, please refresh the browser.</p>");
}
exit();
?>
上周我遇到了这个问题,但托管公司将 AddHandler application/x-httpd-ea-php56 .php
添加到 htaccess 文件并修复了它。出于某种原因,他们还在整个网站目录中添加了额外的 htaccess 文件。然后我想我可能不小心删除或更改了一些 htaccess 文件,现在它不再工作了。在哪个 htaccess 文件中究竟需要什么才能使其正常工作?任何想法为什么它不再起作用?谢谢
事实证明问题很简单,就是 PHP 脚本的文件权限不正确。将脚本的权限更改为 644 解决了问题,不再 "internal server error".