每当我尝试使用以下代码向自己发送电子邮件时,我都会收到此错误:
无法发布/assets/php/sendemail.php
我不熟悉php来调试这个,到目前为止我尝试过的所有东西似乎都没有用完。
php文件位于正确的目录中,所以我至少知道这个文件是正确的。
任何调试方面的帮助都会很棒,谢谢!
<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>
$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上使用服务器
答案 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请求。我不知道如何配置它。尝试使用控制面板或配置文件中的选项。或者询问托管支持团队。