>我有一个问题,包括通过作曲家的私人Google Adwords API库版本4.6.0。在这个库中,有一些文件包含require_once语句,这些语句本身会抛出错误,例如:
PHP Fatal error: main(): Failed opening required 'Google/Api/Ads/Common/Util/Logger.php'
Composer.json 看起来像:
"repositories": [
{
"type": "package",
"package": {
"name": "google/adwords",
"version": "4.6.0",
"source": {
"url": "svn-url/3.3.5/google_lib/",
"type": "svn",
"reference": "Apility/"
}
}
}
]
和:
"require": {
"google/adwords": "4.6.0"
}
"autoload": {
"classmap": [
"vendor/google/"
]
}
}
对于作曲家来说,有没有处理库中require_once语句的通用方法?
问候议员
我无法删除require语句,因为它是一个库,当更新到来时,所有更改都消失了。
我已经试过了:
"repositories": [
{
"type": "package",
"package": {
"name": "google/adwords",
"version": "4.6.0",
"source": {
"url": "https://subversion.unister.lan/keyword-tool/trunk/API_2009/google_lib/",
"type": "svn",
"reference": "Apility/"
},
"autoload": {
"classmap": ["src/"]
},
"include-path": ["src/"]
}
}
],
"require": {
"google/adwords": "4.6.0",
}
但是,库的类没有添加到autoload_classmap.php并且找不到库。
是的,这些语句通常取决于正确设置include_path,您也可以使用 Composer 执行此操作。请参阅 https://getcomposer.org/doc/04-schema.md#include-path
更好的方法是修复代码中的潜在问题,即删除这些语句。
此外,您自己的软件不应该像现在这样声明该库的自动加载(即在供应商目录中声明自动加载)。您正在手动声明包信息,并且该包还应包含自动加载信息以及包含路径设置。请参阅文档中的智能示例:https://getcomposer.org/doc/05-repositories.md#package-2