使用composer安装后包含Swiftmailer文件的麻烦

时间:2015-05-22 08:29:13

标签: php composer-php swiftmailer

我是一个使用作曲家的新手,我在安装后的公共php页面中遇到了一些麻烦,包括Swiftmailer文件。 我使用这个指令安装了Swiftmailer和composer:

php composer.phar require swiftmailer/swiftmailer @stable

一切正常,文件安装在

./vendor/swiftmailer/swiftmailer/

由于文件位于根目录而非public_html中,因此我无法包含它们以便开始使用它们。

在那个位置安装Swiftmailer我是否犯了错误? 我需要改变它吗? 如果是这样,有一个快速的方法吗?

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:2)

简而言之:在应用程序引导程序中添加以下行require 'vendor/autoload.php';(除非它已经存在)。

您只需添加此文件即可免费进行自动加载。 引用:https://getcomposer.org/doc/01-basic-usage.md#autoloading

长版:

Swiftermailer将lib/swift_required.php文件添加到Composer Autoloader:

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

此文件需要一些其他Swiftmailer文件并注册Swiftmailer Autoloader。

执行流程应该是这样的:

  • 您的应用程序index.php
  • 你的bootstrap.php
  • 需要Composer Autoloader
  • 每个请求都会加载autoload部分中的
  • 文件,例如swiftmailer_required.php
  • 现在您可以使用$mailer = new \Swift_Mailer();