我正在开发一个wordpress插件,我的插件目录内的作曲家在根级别。我已经安装了我想使用的所有软件包,然后在自动加载软件包后,在插件文件顶部的每个名称空间中加载PHP use
命令。
PHP错误
[28-Jun-2017 10:09:37 UTC] PHP Fatal error: Class 'DrewMMailChimpMailChimp' not found in /home/xxx/public_html/wp-content/plugins/plugin-name/plugin-name.php on line 44
插件文件结构
/plugin-name
'- vendor/
'- .gitignore
'- composer.json
'- plugin-name.php
composer.json目录
{
"require": {
"guzzlehttp/guzzle": "^6.3",
"theiconic/php-ga-measurement-protocol": "^2.0",
"mailgun/mailgun-php": "~2.3.4",
"stripe/stripe-php": "^4.13.0",
"mailchimp/mailchimp": "^2.0",
"drewm/mailchimp-api": "^2.4"
}
}
plugin-name.php contents
<?php
/*
Plugin Name: Plugin name
[...]
*/
require 'vendor/autoload.php';
use TheIconicTrackingGoogleAnalyticsAnalytics;
use MailgunMailgun;
use StripeStripe;
use DrewMMailChimpMailChimp;
已解决:在plugin-name.php
中,我需要更改
require 'vendor/autoload.php';
to
require plugin_dir_path(__FILE__).'vendor/autoload.php';
因为当前的工作目录始终是WordPress安装的根源,而不是我的插件目录中的目录。
我没有在require
行上遇到错误的原因是因为我在安装根部有另一个类似的vendor
目录。