Я создал форму контакта HTML5, которую я тестирую на локальном хосте (XAMPP) с помощью Swiftmailer, и после нажатия кнопки отправки я получаю следующую ошибку:
Warning: require_once(/swift.php): failed to open stream: No such file or directory in /Applications/XAMPP/xamppfiles/htdocs/testsite/sendmessage.php on line 10
Строка 10 относится, очевидно, к строке require_once на моем PHP, однако в моем файле она заключена в теги HTML.
Я считаю, что эта ошибка говорит мне, что файл не существует, но он делает, и я могу просматривать там без проблем.
И мой файл HTML, и сам файл 'swift.php'
находятся в /Applications/XAMPP/xamppfiles/htdocs/testsite/
поэтому я не уверен, почему я получаю эту ошибку. Я пробовал следующее:
require_once(realpath(dirname(__FILE__).'swift.php'));
безуспешно.
Я также пробовал ряд перестановок текущего пути к файлу (например, такие вещи, как ../
, включая полный путь к файлу, также без успеха.
Мой HTML (form.html)
:
<form id="contactform" name="contact" method="post" action="sendmessage.php"> <label for="Name">Name: *</label><br> <input type="text" name="Name" id="Name"><br> <label for="Email">Email: *</label><br> <input type="Email" name="Email" id="Email" class="txt"><br> <label for="Message">Message: *</label><br> <textarea name="Message" rows="20" cols="20" id="Message" class="txtarea"></textarea><br> <button type="submit" id="submit-button">Send E-mail</button> </form>
Мой PHP ('sendmessage.php')
(опять же, не заключен в теги HTML и BODY здесь):
require_once("/swift.php"); echo 'Mail sent <br />'; // Grab the post data $name = filter_var($_POST['name'], FILTER_SANITIZE_STRING); $usermail = filter_var($_POST['usermail'], FILTER_SANITIZE_EMAIL); $content = filter_var($_POST['content'], FILTER_SANITIZE_STRING); // Construct the body of the email $data = "Name: " . $name . "<br />" . "Email: " . $usermail . "<br />" . "Message: " . $content; // Create the transport $transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 587, 'tls') ->setUsername('foobar@googlemail.com') ->setPassword('GENERATED PASSWORD'); echo 'line 26 <br />'; // Create the mailer using the created transport $mailer = Swift_Mailer::newInstance($transport); $message = Swift_Message::newInstance('This is the subject') ->setFrom(array('foobar@googlemail.com' => 'Feedback Received From User')) ->setTo(array('somemail@gmail.com', 'foobar@googlemail.com' => 'Lead Recipients')) ->setSubject('Here is your Feedback subject') ->setBody($data, 'text/html'); echo 'line 34 <br />'; // Send the message $result = $mailer -> send($message); echo $result; echo 'line 39<br />'; ?>
«GENERATED PASSWORD» – это приложение, которое требуется при использовании двухэтапной проверки Google, но это, конечно, было удалено здесь.
Я рассмотрел следующие вопросы здесь , здесь и здесь, но я, кажется, выполнил приведенный совет.
Я пробовал 'require_once("/swift.php");'
to 'require_once("swift.php");'
, однако это дает мне следующую ошибку:
Warning: require(/Applications/XAMPP/xamppfiles/htdocs/testsite/classes/Swift.php): failed to open stream: No such file or directory in /Applications/XAMPP/xamppfiles/htdocs/testsite/swift.php on line 20
Разница заключается в добавлении подпапки «classes» теперь в пути. Помещение 'swift.php'
в эту папку дает мне исходную ошибку.
Строка 20 для справки:
$data = "Name: " . $name . "<br />" . "Email: " . $usermail . "<br />" . "Message: " . $content;
Я посмотрел, чтобы проверить следующий код –
В sendmessage.php в строке 10:
require_once(dirname(__FILE__)."/swift.php");
В swift.php в строке 20:
require(dirname(__FILE__)."/classes/Swift.php");
и они присутствуют и правильны. Ошибка проверки и повторного запуска:
Warning: require(/Applications/XAMPP/xamppfiles/htdocs/testsite/classes/classes/Swift.php): failed to open stream: No such file or directory in /Applications/XAMPP/xamppfiles/htdocs/testsite/classes/Swift.php on line 20
Кажется, он ищет дополнительную папку «classes» каждый раз, когда я добавляю одну из этих папок.