Composer php 自动加载的HTTP/Request2代码中的错误,如何对composer进行故障排除?
我有两个不同的系统,上面克隆了一个git存储库。Composer php 自动加载的HTTP/Request2代码中的错误,如何对composer进行故障排除?,composer-php,Composer Php,我有两个不同的系统,上面克隆了一个git存储库。 该项目使用composer安装各种依赖项。 其中之一是pear/HTTP_Request2,它需要Net/URL2 这两个系统都是带有xampp开发环境的Windows。因此,两者都运行带有PHP7.1.*安装的Apache2 通过composer-install安装后,其中一款手机的所有功能都能正常工作。但另一个总是在自动加载的HTTP/Request2代码中出错: <b>Warning</b>: require_on
该项目使用composer安装各种依赖项。
其中之一是
pear/HTTP_Request2
,它需要Net/URL2
这两个系统都是带有xampp开发环境的Windows。因此,两者都运行带有PHP7.1.*安装的Apache2 通过
composer-install
安装后,其中一款手机的所有功能都能正常工作。但另一个总是在自动加载的HTTP/Request2代码中出错:
<b>Warning</b>: require_once(Net/URL2.php): failed to open stream: No such file or directory in <b>C:\xampp\htdocs\XXX\vendor\pear\http_request2\HTTP\Request2.php</b> on line <b>25</b><br />
<br />
<b>Fatal error</b>: require_once(): Failed opening required 'Net/URL2.php' (include_path='C:\xampp\htdocs\XXX\vendor/pear/pear_exception;C:\xampp\htdocs\XXX\vendor/pear/http_request2;C:\xampp\php\PEAR') in <b>C:\xampp\htdocs\XXX\vendor\pear\http_request2\HTTP\Request2.php</b> on line <b>25</b><br />
根据编写器的输出判断,NetURL2的依赖项已成功安装
尽管如此,我还是试图通过在项目中要求HTTP/Request2“pear/net_url2”:“^2.2.0”
中的依赖项来修复它,因为我从一个bug(很久以前就关闭了,但仍然存在)那里听到了关于该()的问题的消息,这并没有导致任何更改
根据检查过的代码判断,我也认为它已经过时了
现在我被困在不知道下一步该做什么。。。帮忙
编辑:
如果有人想知道,我的composer.json基本上是这样的:
{
"require":
{
"php":">=7.1.4",
"pear/http_request2": "v2.3.0",
"ext-json":"1.5.0",
"ext-PDO":"7.*",
"ext-pdo_mysql":"7.*",
"ext-mbstring":"7.*",
"ext-gd":"7.*"
},
"autoload": {
"files": [
"helper.php",
"settings.php"
],
"classmap": ["./"],
"exclude-from-classmap": ["vendor/"]
}
}
要对Composer进行常规故障排除,您可以为详细信息添加-vvv
标志
其次,当您安装了PHP扩展时,每次发生致命错误时都会看到一个调用堆栈
注意:运行phpenmod-s cli xdebug以在cli模式下启用xdebug
当它尝试包含
Net/URL2.php
文件(pear/Net\u URL2的一部分,完整路径:vendor/pear/Net\u URL2/Net/URL2.php
)时,(根据)会发生致命错误
此路径通常应由Composer添加到include_paths.php
中,如:
vendor/composer/include_paths.php: $vendorDir . '/pear/net_url2',
但没有做到这一点。要再次生成自动加载文件,请运行以下命令:
composer dump-autoload -o
并检查vendor/composer
下的自动加载文件是否已按预期生成
为了测试这一点,我运行了这个PHP命令,它起了作用:
php -r 'require_once "vendor/autoload.php"; require_once "vendor/pear/http_request2/HTTP/Request2.php";'
注意:要查看失败的场景,请删除autoload.php
的include
php -r 'require_once "vendor/autoload.php"; require_once "vendor/pear/http_request2/HTTP/Request2.php";'