2014-02-19 53 views
1

我有一个问题,包括通过作曲家的私人谷歌AdWords API api-library版本4.6.0。 在这个库中有文件,这containts require_once声明其自理不是抛出一个错误,如:作曲家 - 带有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语句的一般方法?

问候 凯


我不能删除要求陈述,因为它的图书馆,当一个更新来了,所有的改变都不见了..

我已经尝试过了过来:

"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

是的,这些语句通常取决于正确设置的include_path,并且您也可以使用Composer完成此操作。请参阅https://getcomposer.org/doc/04-schema.md#include-path

更好的方法是解决代码中的根本问题,即删除这些语句。

此外,您自己的软件不应该为该库声明自动加载,就像您现在一样(即在vendor目录中声明自动加载)。您正在手动声明包信息,并且该包还应包含自动加载信息以及包含路径设置。请参阅文档中的聪明例子:https://getcomposer.org/doc/05-repositories.md#package-2