【问题标题】:PayPal API Class not found error on hosted server托管服务器上未找到 PayPal API 类错误
【发布时间】:2018-04-15 14:02:07
【问题描述】:

我在使用 PayPal 的 REST API 创建的电子商务网站来处理付款时确实遇到了一些困难。

我设置了所有这些,它在我的服务器环境中运行良好(使用运行 PHP 7.1.1 的 XAMPP)但我最近将项目移动到托管服务器(运行 PHP 7.0 的 1and1),现在我收到了以下错误(我制作了一个测试脚本,显示与我的 checkout.php 相同的错误以保存不必要的代码):

致命错误:未捕获的错误:在 /homepages/XX/XXXXXXXXXX/htdocs/test.php:6 中找不到类 'PayPal\API\payer' 堆栈跟踪:在 /homepages/XX/XXXXXXXXXX 中抛出 #0 {main} /htdocs/test.php 第 6 行

test.php:

<?php
require __DIR__."/bootstrap.php";

use PayPal\API\payer;

$test = new payer();
?>

bootstrap.php:

<?php

// 1. Autoload the SDK Package. This will include all the files and classes to your autoloader
// Used for composer based installation
// require __DIR__  . '/vendor/autoload.php';
// Use below for direct download installation
require __DIR__  . '/PayPal-PHP-SDK/autoload.php';

define('SITE_URL', 'http://www.XXXXXXXXXXXXXX.com/paypal');

// sandbox credentials
$paypal = new \PayPal\Rest\ApiContext(
        new \PayPal\Auth\OAuthTokenCredential(
            'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',     // ClientID
            'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'      // ClientSecret
        )
);
?>

自动加载.php

<?php
    // autoload.php @generated by Composer

    require_once __DIR__ . '/composer/autoload_real.php';

    return ComposerAutoloaderInitddf6726757c04c8de8443463a9140734::getLoader();

我知道这是由于命名空间/类造成的,而且我已经数不清自己花了多少时间在 Google 上搜索和搜索 Stack Overflow 以寻求答案,现在我承认失败并寻求帮助。如果有重复的答案,我提前道歉,有很多类似的错误,但我没有看到能够解释/解决我的具体问题。

我真正无法理解的是为什么这在我的本地服务器上可以正常工作,但在托管服务器上却不行。我知道我的要求没问题,因为如果我输入 echo "test";例如在相关的.PHP文件中,然后输出到屏幕上。

我没有使用作曲家或任何类似的软件,一切都是用记事本++编写的。 Paypal API 未经修改 (from here),位于我的根目录中,名称为“/PayPal-PHP-SDK/”。

非常感谢任何帮助。 谢谢

【问题讨论】:

  • 你能给出 autoload.php 的代码和你的 Paypal 类吗?
  • 可能是案例问题...您尝试Payer() 而不是payer() 吗?
  • 是的,不幸的是,我尝试过 Payer 和 Paypal(小写 P)以及两者的各种组合,但均无济于事。
  • 你不应该包括vendor/autoload.php吗?
  • 我相信 vendor/autoload.php 用于基于 Composer 的安装,我的不是,但如果我没有成功,我可能会考虑使用它

标签: php class paypal namespaces


【解决方案1】:

谢谢兰德尔,

这确实是一个案例问题,托管的 Linux 服务器对这个案例很挑剔,而我的 Windows 服务器则不然。

我需要在我的使用声明和付款人(与付款人)中设置 Api 而不是 API,如下所示:

<?php
require __DIR__."/bootstrap.php";

use PayPal\Api\Payer;

$test = new Payer();
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-25
    • 2014-06-29
    • 2018-08-05
    • 1970-01-01
    • 2017-06-09
    • 2016-12-20
    • 2021-10-12
    • 2015-09-09
    相关资源
    最近更新 更多