不能POST .php电子邮件

时间:2016-02-16 05:35:19

标签: php post openshift

每当我尝试使用以下代码向自己发送电子邮件时,我都会收到此错误:

  

无法发布/assets/php/sendemail.php

我不熟悉php来调试这个,到目前为止我尝试过的所有东西似乎都没有用完。

php文件位于正确的目录中,所以我至少知道这个文件是正确的。

任何调试方面的帮助都会很棒,谢谢!

我的HTML代码:

<div class="col-md-6">
<div class="contact-form">
    <strong>Send me a message</strong>
    <form name="contact-form" method="post" action="assets/php/sendemail.php">
        <div class="form-group">
            <label for="InputName1">Name</label>
            <input type="text" name="name" class="form-control" id="InputName1" required="">
        </div>
        <div class="form-group">
            <label for="InputEmail1">Email</label>
            <input type="email" name="email" class="form-control" id="InputEmail1" required="">
        </div>
        <div class="form-group">
            <label for="InputSubject">Subject</label>
            <input type="text" name="subject" class="form-control" id="InputSubject">
        </div>
        <div class="form-group">
            <label for="InputTextarea">Message</label>
            <textarea name="message" class="form-control" id="InputTextarea" rows="5" required=""></textarea>
        </div>

        <button type="submit" name="submit" class="btn btn-primary">Send Message</button>
    </form>
</div>

我的PHP代码:

$name = @trim(stripslashes($_POST['name']));
$email = @trim(stripslashes($_POST['email']));
$subject = @trim(stripslashes($_POST['subject']));
$message = @trim(stripslashes($_POST['message']));

$email_from = $email;
$email_to = 'myemail@email.com'; //replace with your email

$body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message;

$success = @mail($email_to, $body, 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message);

文件夹结构:

在OpenShift上使用服务器

enter image description here

3 个答案:

答案 0 :(得分:1)

首先,您可以通过在页面上保留PHP代码来进行调试。我的意思是在<?php标签中使用

if(isset($_POST['submit'])){echo "<pre>"; print_r($_POST); }

你可以像上面那样打印数组,这样你就可以知道它是进入那个范围还是别的东西。

答案 1 :(得分:0)

对于调试,在<?php之后添加这2行,就像这样:

<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);

然后显示正在调试的变量的内容。

var_dump($_POST);

我建议您使用扩展程序或库,我已经使用了Xdebug几次并为我工作。

答案 2 :(得分:0)

PHP没有问题。请求停止在Web服务器上,不要传递给PHP后端。

我认为它需要在OpenShift中配置。现在服务器只允许GET请求。我不知道如何配置它。尝试使用控制面板或配置文件中的选项。或者询问托管支持团队。