我有一个问题,包括通过composer的私人谷歌adwords api-library版本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/"
]
}
}
是否有一般方法在库中为composer处理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并且找不到库。
答案 0 :(得分:0)
是的,这些语句通常取决于正确设置的include_path,您也可以使用Composer执行此操作。见https://getcomposer.org/doc/04-schema.md#include-path
更好的方法是修复代码中的底层问题,即删除这些语句。
此外,您自己的软件不应像现在那样声明该库的自动加载(即在供应商目录中声明自动加载)。您手动声明包信息,该包还应包含自动加载信息以及包含路径设置。请参阅文档中的智能示例:https://getcomposer.org/doc/05-repositories.md#package-2