【问题标题】:How to debug PHP composer autoloader如何调试 PHP 作曲家自动加载器
【发布时间】:2018-11-08 10:12:46
【问题描述】:

我正在尝试使用 HiPay php 库。我安装了这个库:

composer require hipay/hipay-fullservice-sdk-php

生成一个包含 HiPay 库的供应商目录。在我的 order.php 页面中,我使用

<?php
namespace TokenizationExample;

require __DIR__ . '/config/credentials.php';
require __DIR__ . '/vendor/autoload.php';

$config = new \HiPay\Fullservice\HTTP\Configuration\Configuration($credentials['private']['username'], $credentials['private']['password']);

但我得到 i Class Not Found 错误

$config = new \HiPay\Fullservice\HTTP\Configuration\Configuration($credentials['private']['username'], $credentials['private']['password']);

它可以在我本地运行 XAMPP 的 win 10 计算机上运行,​​但是当我将代码上传到我的主机时它不起作用。我检查了电影名称中的不匹配,但我无法发现问题所在。

这是错误:

Fatal error: Uncaught Error: Class 'HiPay\Fullservice\HTTP\Configuration\Configuration' not found in /home/XXXXX/order.php:8 Stack trace: #0 {main} thrown in /home/XXXXX/order.php on line 8

以及作曲家创建的供应商目录

但是我怎样才能找出问题所在?并调试 autoload.php?抱歉新手问题。我是 PHP 新手

更新 1:

我做了一个 aulotloader 的“print_r”

$autoloader = require __DIR__ . '/vendor/autoload.php';
print_r($autoloader,true)

如果它不起作用,则从托管站点获得此结果

Composer\Autoload\ClassLoader Object
(
    [prefixLengthsPsr4:Composer\Autoload\ClassLoader:private] =&gt; Array
        (
            [H] =&gt; Array
                (
                    [HiPay\Fullservice\] =&gt; 18
                )

        )

    [prefixDirsPsr4:Composer\Autoload\ClassLoader:private] =&gt; Array
        (
            [HiPay\Fullservice\] =&gt; Array
                (
                    [0] =&gt; /home/XXXXX/vendor/composer/../hipay/hipay-fullservice-sdk-php/lib/HiPay/Fullservice
                )

        )

    [fallbackDirsPsr4:Composer\Autoload\ClassLoader:private] =&gt; Array
        (
        )

    [prefixesPsr0:Composer\Autoload\ClassLoader:private] =&gt; Array
        (
        )

    [fallbackDirsPsr0:Composer\Autoload\ClassLoader:private] =&gt; Array
        (
        )

    [useIncludePath:Composer\Autoload\ClassLoader:private] =&gt; 
    [classMap:Composer\Autoload\ClassLoader:private] =&gt; Array
        (
        )

    [classMapAuthoritative:Composer\Autoload\ClassLoader:private] =&gt; 
    [missingClasses:Composer\Autoload\ClassLoader:private] =&gt; Array
        (
        )

    [apcuPrefix:Composer\Autoload\ClassLoader:private] =&gt; 
)

不工作和工作的本地 XAMPP 站点 print_r 输出之间的唯一区别是

[prefixDirsPsr4:Composer\Autoload\ClassLoader:private] =&gt; Array
        (
            [HiPay\Fullservice\] =&gt; Array
                (
                    [0] =&gt; C:\xampp\htdocs\hipay-example\vendor\composer/../hipay/hipay-fullservice-sdk-php/lib/HiPay/Fullservice
                )

        )

所以我将 HiPay 文件夹重命名为 hipay 并且一切正常。经验教训,使用“print_r”调试您的自动装线机 fckps

【问题讨论】:

  • 设置您的composer.json 并运行composer install。它将生成正确的自动加载器
  • Composer 在服务器上不可用。
  • 所以下载 composer.phar 文件并将其包含在您的构建中。然后php composer.phar install

标签: php composer-php autoloader


【解决方案1】:

您上传到服务器的代码将在 Linux 上运行,这区分大小写,但在 Windows 操作系统中则无关紧要。

【讨论】:

  • 如果你是在linux上部署并且你是在windows机器上开发的,我建议检查文件夹名称和类的大小写!
猜你喜欢
  • 2015-09-24
  • 2014-08-15
  • 1970-01-01
  • 1970-01-01
  • 2013-12-09
  • 2018-08-26
  • 2013-03-05
  • 2019-05-16
相关资源
最近更新 更多