不能 require_once fdpf/fpdf.php
Can't require_once fdpf/fpdf.php
我正在使用 JanSlabon 的 FPDI 库来保护从我的 laravel 应用程序上传的 PDF 文件。但是即使我导航到文件本身,我也无法执行代码 require_once。我收到错误:
Failed opening required '../../vendor/setasign/fpdf/fpdf.php' (include_path='.:/usr/local/Cellar/php/7.3.4/share/php/pear')
我需要的代码是:
require_once('../../vendor/setasign/fpdf/fpdf.php');
require_once('../../vendor/setasign/fpdi/src/autoload.php');
您到 vendor 的相对路径 ../../
可能是错误的。为避免此问题,请使用 Laravel base_path()
助手,它将提供绝对路径。
require_once(base_path('vendor/setasign/fpdf/fpdf.php'));
require_once(base_path('vendor/setasign/fpdi/src/autoload.php'));
您可以使用 composer.json
自动加载。首先,在app目录下新建一个名为Custom的目录,将fpdi目录复制到app/Custom
.
现在,在 composer.json 文件的 autoload
部分,需要该文件。在需要该文件后,如果它是一个新的 Laravel 应用程序,您的 composer.json 文件的自动加载块应该如下所示:
"autoload": {
"psr-4": {
"App\": "app/"
},
"classmap": [
"database/seeds",
"database/factories"
],
"files": [
"app/Custom/fpdi/FPDI_Protection.php"
]
},
更新您的 composer.json 文件后,运行 composer dumpautoload
。现在,您可以在 Laravel 控制器或模型中使用 类,无需手动输入文件。
在做测试时,我看到这个库使用了一些不推荐使用的方法等等。您将不得不处理它,即更新代码以满足您的需要。但我希望这个答案能以某种方式帮助您,使您也能够使用任何其他库。如果此库的修复过于广泛,请进行 Google 搜索并找到更现代的库。
当库已经位于您的 vendor 文件夹中时,您应该简单地使用 composer 的 autoload.php 文件(默认情况下 laravel 不使用它吗?)。
所以只需将依赖项添加到您的 composer.json(如果尚未完成):
"require": {
"setasign/fpdf": "^1.8",
"setasign/fpdi": "^2.2",
"setasign/fpdi-protection": "^2.0"
}
更新通过composer update
和:
<?php
use setasign\FpdiProtection\FpdiProtection;
require_once('vendor/autoload.php');
$pdf = new FpdiProtection();
...
我正在使用 JanSlabon 的 FPDI 库来保护从我的 laravel 应用程序上传的 PDF 文件。但是即使我导航到文件本身,我也无法执行代码 require_once。我收到错误:
Failed opening required '../../vendor/setasign/fpdf/fpdf.php' (include_path='.:/usr/local/Cellar/php/7.3.4/share/php/pear')
我需要的代码是:
require_once('../../vendor/setasign/fpdf/fpdf.php');
require_once('../../vendor/setasign/fpdi/src/autoload.php');
您到 vendor 的相对路径 ../../
可能是错误的。为避免此问题,请使用 Laravel base_path()
助手,它将提供绝对路径。
require_once(base_path('vendor/setasign/fpdf/fpdf.php'));
require_once(base_path('vendor/setasign/fpdi/src/autoload.php'));
您可以使用 composer.json
自动加载。首先,在app目录下新建一个名为Custom的目录,将fpdi目录复制到app/Custom
.
现在,在 composer.json 文件的 autoload
部分,需要该文件。在需要该文件后,如果它是一个新的 Laravel 应用程序,您的 composer.json 文件的自动加载块应该如下所示:
"autoload": {
"psr-4": {
"App\": "app/"
},
"classmap": [
"database/seeds",
"database/factories"
],
"files": [
"app/Custom/fpdi/FPDI_Protection.php"
]
},
更新您的 composer.json 文件后,运行 composer dumpautoload
。现在,您可以在 Laravel 控制器或模型中使用 类,无需手动输入文件。
在做测试时,我看到这个库使用了一些不推荐使用的方法等等。您将不得不处理它,即更新代码以满足您的需要。但我希望这个答案能以某种方式帮助您,使您也能够使用任何其他库。如果此库的修复过于广泛,请进行 Google 搜索并找到更现代的库。
当库已经位于您的 vendor 文件夹中时,您应该简单地使用 composer 的 autoload.php 文件(默认情况下 laravel 不使用它吗?)。
所以只需将依赖项添加到您的 composer.json(如果尚未完成):
"require": {
"setasign/fpdf": "^1.8",
"setasign/fpdi": "^2.2",
"setasign/fpdi-protection": "^2.0"
}
更新通过composer update
和:
<?php
use setasign\FpdiProtection\FpdiProtection;
require_once('vendor/autoload.php');
$pdf = new FpdiProtection();
...