我是一个使用作曲家的新手,我在安装后的公共php页面中遇到了一些麻烦,包括Swiftmailer文件。 我使用这个指令安装了Swiftmailer和composer:
php composer.phar require swiftmailer/swiftmailer @stable
一切正常,文件安装在
中./vendor/swiftmailer/swiftmailer/
由于文件位于根目录而非public_html中,因此我无法包含它们以便开始使用它们。
在那个位置安装Swiftmailer我是否犯了错误? 我需要改变它吗? 如果是这样,有一个快速的方法吗?
答案 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。
执行流程应该是这样的:
autoload
部分中的swiftmailer_required.php
$mailer = new \Swift_Mailer();