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".