2017-09-15 17 views
2

私の無知を許してください。 Linux上でPHP 5.6でPHPMailer 6.0.1をインストールしようとしています。 私のPHPインストールはリモートで、私はすべてのウェブサイトのPHPをFTP経由で管理しています(通常、パッケージをWindows 10に.zipとしてダウンロードし、展開してWebスペースにFTPします)。ComposerなしでPHPMailerをインストール

PHPMailerをインストールするさまざまな方法の中で、Composerが推奨されていますが、これが私の目の前にあります。どの作曲家の指示もこの作業方法には適していないようです - インストーラは私に「使用したいコマンドラインを選択してください」と言いますが、PHPをローカルには持っていません... PHPMailerの作曲家を見ています。 jsonファイルが使用されるのを待ってインストールされました。 PHPMailerAutoload.phpはありません(これはComposerによって作成されていますか?)

私はPHPMailerを手動でインストールしようとしています。私はダウンロードし、解凍し、結果のディレクトリをフォルダPHPMailerの私のウェブスペースにアップロードします。私はその後、私のPHPコードの先頭にし、任意の関数の外側で、次を挿入します。

require_once 'PHPMailer/src/PHPMailer.php'; 
require_once 'PHPMailer/src/SMTP.php'; 
use PHPMailer\PHPMailer\PHPMailer; 
use PHPMailer\PHPMailer\SMTP; 
use PHPMailer\PHPMailer\Exception; 

私は構文エラーに予想外の「使用」(T_USE)を得る「使用」ステートメントで... をそれらがなければ私はインスタンス化しようとするまで進んでください: $ mail = new PHPMailer; これは 'クラス' PHPMailer 'が見つからない場合に失敗します

私は間違っていますか、どうすればよいでしょうか?

+0

PHPをローカルで取得すると、あなたの人生ははるかに簡単になります。ローカルの開発環境を持つことは非常に便利です。 – ceejayoz

答えて

0

あなたrequireを変更し、phpmailerののwikiのように設定してみてくださいは言う:

<?php 
require 'PHPMailerAutoload.php'; 
$mail = new PHPMailer; 

Link of wiki

+3

PHPMailer 6.0.1では、 'PHPMailerAutoload.php'はもう存在しないと思います。 –

+0

実際それはしません。 – Synchro

+0

申し訳ありませんが、私は彼のバージョンを見ませんでした。私は6.0より古いバージョンを使用しています。 –

5

これはphpmailerのに固有ではない - それはあなたが任意のために対処する必要があるだけのものです名前空間を使用する無数のPHPパッケージuseの使い方に関するPHPのドキュメントはhereです。

ショートバージョンが、他のスクリプトの前にnamespaceuseディレクティブを配置する必要がありますので、あなたは単にあなたのコマンドの順序を逆にすれば、それは動作するはずです:

ちなみに
use PHPMailer\PHPMailer\PHPMailer; 
use PHPMailer\PHPMailer\SMTP; 
use PHPMailer\PHPMailer\Exception; 
require_once 'PHPMailer/src/PHPMailer.php'; 
require_once 'PHPMailer/src/SMTP.php'; 

、これは注文ですPHPMailerで提供されているreadmeとその他のすべての例で使用されています。 the upgrade guideも便利です。

PHPMailerAutoload.phpファイルは存在しなくなりました。作曲者のオートローダーははるかに優れた仕事をしています。 PHPMailer自身のcomposer.jsonファイルは、あなた自身の作曲者ファイルの依存関係とフラグの互換性要件を解決するために使用されます。つまり、PHPMailerの使い方をプロジェクトの作曲者ファイルに伝えるためです独自のものがあります。

ローカルのPHPインスタンスを使用しないで開発するのは難しい作業です - 実際のサーバーで開発することは、「落胆させる」ことです。 PHPを直接インストールできない場合は、VirtualBoxや完全に自己完結型のXAMPPなどを使ってVMで実行してください。

+0

'use'と 'require'の順番を逆にしても違いはありませんでしたが、両方ともスクリプトの頭に動かされました。 'use'のドキュメントを見ると、関数の外にあることを除いて前提条件が存在しないため、なぜこれが当てはまるのかはまだ分かりません(クラス内で定義されたクラス名のインスタンス化に先立ちます)。 – decomplexity

+0

あなたはすでに脚本の頭にそれらを持っていないということは私には起こりませんでした。 – Synchro

+2

'PHPMailer \ PHPMailer \ PHPMailer'のナンセンスは完璧に動作します! thanks \ thanks \ thanksを使ってください。 – andreszs

関連する問題