2012-04-05 44 views
1

私のウェブサイトに連絡フォームを追加しようとしています。swiftmailerでエラーが発生しました

Warning: is_writable() [function.is-writable]: open_basedir restriction in effect.  
File(/tmp) is not within the allowed path(s): 
(/var/www/virtual/mydomain.it/:/usr/share/php/:/var/www/ispcp/gui/tools/filemanager/) in /var/www/virtual/mydomain.it/htdocs/prova-intro/Swift-4.1.6/lib/preferences.php on line 15` 

致命的なエラー::私が使用しているUncaught exception Swift_TransportException' with message

'Expected response code 220 but got code "554",

with message "554 santino.mail.tiscali.it ESMTP server not available from your IP "' in /var/www/virtual/mydomain.it/htdocs/prova-intro/Swift-4.1.6/lib/classes/Swift/Transport/AbstractSmtpTransport.php:422 Stack trace: #0 /var/www/virtual/mydomain.it/htdocs/prova-intro/Swift-4.1.6/lib/classes/Swift/Transport/AbstractSmtpTransport.php(315):` 
Swift_Transport_AbstractSmtpTransport->_assertResponseCode('554 santino.mai...', Array) 

#1 /var/www/virtual/mydomain.it/htdocs/prova-intro/Swift-4.1.6/lib/classes/Swift/Transport/AbstractSmtpTransport.php(123): Swift_Transport_AbstractSmtpTransport->_readGreeting() 
#2 /var/www/virtual/mydomain.it/htdocs/prova-intro/Swift-4.1.6/lib/classes/Swift/Mailer.php(79): Swift_Transport_AbstractSmtpTransport->start() 

#3 /var/www/virtual/mydomain.it/htdocs/prova-intro/mail_SwiftMailer.php(129): Swift_Mailer->send(Object(Swift_Message) in /var/www/virtual/mydomain.it/htdocs/prova-intro/Swift-4.1.6/lib/classes/Swift/Transport/AbstractSmtpTransport.php on line 422` 

パラメータ:

ローカルホストでは、今、私はこのエラーを取得していTiscaliサーバ上で動く、うまく働きました
define('HOST_SMTP', 'smtp.mydomain.it'); 
define('PORT_SMTP', 465); 
define('SECUTITY_SMTP', ssl); 
define('EMAIL_SMTP', '[email protected]'); 
define('PASSWORD_SMTP', 'xxxxxxx'); 
define('EMAIL_DESTINATARIO', $_POST['destinatario']); 
define('MAX_DIM_FILE', 1048576); // 1mb 
+0

SMTPサーバーに話をすることができません:

ので、私のようなSTHを書きました。私はそのswiftmailerの欠陥だとは思っていませんが、Webサーバーのマシンまたはsmtpサーバーの設定に問題があります。 – F21

答えて

4

まれです - PHPからメールを送信すると報告されたエラーは、MTAとは関係ありません!

Swiftmailerが一時ファイルを作成しようとしています。ソースコードを掘り下げることなく、わかりやすく書かれていれば、tmpnam()またはtmpfile()を使うべきです(明示的に "システムのデフォルトのtemp dir"を使って上書きする場合を除いて)。 、デフォルトでは存在しませんコンパイルされている。

sys_get_temp_dir()関数によって返され使用されるディレクトリ

(ではSwiftMailerは、それはむしろ愚かなバグでは意味の作成に失敗したファイルを送信しようとすることになるのでそのコード)

PHPの残りの設定が確実に設定されるように、open_basedirの制限を設定した人は本当に責任があります。c orrectly(セッション保存パス、temp dirなど)。私は彼らにそれを正しく固定させるために文句を言うだろう。一方

は、スクリプトの先頭に

$_ENV['TMPDIR']='/var/www/virtual/mydomain.it/tmp'; 
$_ENV['TMP']=$_ENV['TMPDIR']; 

を挿入しようとすると、ウェブサーバーが、それは書き込み可能な作り、関連するディレクトリを作成します。

同じエラーメッセージがtmpfile()ページのdescribed in the commentsであることに注意してください。

+0

私は問題を解決できません。同じエラーを取得します。私は制限を修正するために私のプロバイダに依頼するつもりです。ご協力ありがとうございました – Franc

0

symcbeanの解決策は、環境変数を変更できるようにするために、1つのポイントの隣に私のためにうまくいきます。putenv()を使用する必要がありました。それはあなたのWebサーバのマシンをslike見て、あなたのエラーメッセージについて

<?php 
// web/app_dev.php 
// in prod the warning should not raise an exception, 
// but this depends on the error handling 

use [..] 

$tmpDir = __DIR__.'/../app/cache'; 

putenv('TMP='.$tmpDir); 
putenv('TMPDIR='.$tmpDir); 
putenv('TEMP='.$tmpDir); 

$loader = require_once __DIR__.'/../app/bootstrap.php.cache'; 
[..] 
関連する問題