手动将软件包附加到Laravel(由于防火墙而无法使用composer)

时间:2016-02-08 14:43:30

标签: php laravel package composer-php dompdf

由于公司防火墙,我无法使用composer来处理我的依赖项。目前我尝试使用Barry vd Heuvel's DomPDF wrapper for Laravel并尝试:

  1. 从Github(主)
  2. 下载zip文件
  3. 更新了composer.json(不确定是否需要,但无论如何都这样做了)并在"barryvdh/laravel-dompdf": "*"容器中添加了require
  4. 创建文件夹结构:vendor/barryvdh/laravel-dompdf
  5. 将包中的所有文件放在那里(config - 文件夹,src - 文件夹和文件.gitignorecomposer.jsonreadme.md
  6. 在我的app.php中添加服务提供商和外观。服务提供商列为Barryvdh\DomPDF\ServiceProvider::class,且外观的别名为'PDF' => Barryvdh\DomPDF\Facade::class
  7. composer dump-autoload
  8. 刷新浏览器后,我获得了Class 'Barryvdh\DomPDF\ServiceProvider' not found。我还尝试运行php artisan cache:clearphp artisan dump-autoload,但最后一个失败了它无法找到Barryvdh\DomPDF\ServiceProvider

    我忘了做些什么才能让它发挥作用?

    更新 我已经尝试过Wouter J的建议答案,composer.json现在看起来像:

    ..
    "autoload": {
        "classmap": [
          "database"
        ],
        "psr-4": {
          "App\\": "app/",
          "Barryvdh\\DomPDF\\": "vendor/barryvdh/laravel-dompdf/src"
        },
    ..
    

    我已经验证了作曲家dump-autoload是否有任何效果,但我认为它有。因为该条目现在也列在vendor/composer/autoload_psr4.php中,如:

    return array(
     // more entries
     'Barryvdh\\DomPDF\\' => array($vendorDir . '/barryvdh/laravel-dompdf/src'),
     'App\\' => array($baseDir . '/app'),
    );
    

    我相信在这一点上这是有效的,但Facade没有回应。当我尝试调用类似PDF::loadView(...)之类的内容并让我让PhpStorm导入类(vendor/barryvdh/laravel-dompdf/src/PDF.php)时,它会抛出一个错误,我无法静态调用方法loadView。根据文档,我应该可以这样称呼它:

    $pdf = PDF::loadView('pdf.invoice', $data);
    return $pdf->download('invoice.pdf');
    

    但是这会导致我Non-static method Barryvdh\DomPDF\PDF::loadView() should not be called statically, assuming $this from incompatible context

    建议?

3 个答案:

答案 0 :(得分:3)

Composer autoload仍然不知道如何下载软件包。您必须像这样配置自动加载:

docke run -it -v ~/some.txt:/some/container/folder

答案 1 :(得分:1)

我知道这个问题已经过时了,但由于我没有看到任何解决方案,所以这是我的:我遇到了完全相同的问题。能够通过在我的localhost上运行composer dumpautoload来解决,然后复制文件夹' vendor / composer'没有SSH访问权限的共享主机。希望这会帮助处于类似情况的人。

答案 2 :(得分:0)

该问题解决了该应用程序不了解DomPDF\ServiceProvidor或与DomPDF相关的任何问题,因为barryvdh/laravel-dompdf本身依赖于dpmpdf/dompdf包仍然缺少且未附带barryvdh/laravel-dompdf

dompdf/dompdf也取决于几个扩展名,即

PHP version 5.3.0 or higher
DOM extension
GD extension
MBString extension
php-font-lib
php-svg-lib

看看这里的包https://packagist.org/packages/dompdf/dompdf下载并放入您的供应商目录,然后更新您应该正常工作的composer dumpautoload