2015-05-22 75 views
3

我是一個使用作曲家的新手,我在安裝後在公共php頁面中遇到了一些麻煩,包括Swiftmailer文件。 我使用這個指令安裝Swiftmailer與作曲家:包括使用作曲家安裝Swiftmailer文件後的麻煩

php composer.phar require swiftmailer/swiftmailer @stable 

所有工作正常,文件都安裝在

./vendor/swiftmailer/swiftmailer/ 

由於文件是根,而不是在爲public_html,我不能夠包括他們爲了開始使用它。

我在安裝Swiftmailer時出現錯誤嗎? 我需要改變它嗎? 如果是的話,有一個快速的方法?

+0

你如何使用swiftmailer?你有服務容器嗎? – Med

+0

我無法使用它,因爲文件在根目錄下,我不知道在php中使用哪個路徑,以便將Swiftmailer文件包含在我的php頁面中。我不知道什麼是服務容器 – Luca

+0

$ mailer = new \ Swift_Mailer(); ? – Med

回答

2

簡而言之:添加以下行require 'vendor/autoload.php';在你的bootstrap(除非它已經存在)。

你可以簡單地包含這個文件,你會自由加載自動加載。 引用:https://getcomposer.org/doc/01-basic-usage.md#autoloading


長的版本:

Swiftermailer添加lib/swift_required.php文件作曲家自動加載:

https://github.com/swiftmailer/swiftmailer/blob/master/composer.json#L25

這個文件需要一些其他Swiftmailer文件和註冊Swiftmailer自動裝彈機。

執行流程應該是這樣的:

  • 您的應用程序的index.php
  • 您的bootstrap.php
  • 需要自動加載作曲家
  • 文件在autoload部分被加載在每次請求,就像swiftmailer_required.php
  • 現在你可以使用$mailer = new \Swift_Mailer();
2

如果你想使用由Composer安裝的東西,你必須在你的代碼中包含自動加載器。

而且由於包含PHP代碼使用的是文件系統,而不是Web服務器訪問,所以無論腳本所在的位置能夠通過web服務器訪問它 - 這都是件好事,不希望每個PHP腳本通過網絡訪問。

您必須將Composer自動加載器包含在腳本的第一行中,然後才能使用Composer安裝的所有內容。

include 'vendor/autoload.php'; // adjust the path depending on where your script is located. 

這可能會導致這樣的事情:

./public_html/index.php: 

include '../vendor/autoload.php'; // located in ./vendor/ 

$mailer = new \Swift_Mailer();