首页 > 解决方案 > 是否有运行 PHP v7.0 的 PSWebServiceLibrary.php 版本?

问题描述

我有一个在 Prestashop 1.6.1.5 上运行的站点 A,并在另一个站点(站点 B)上检索数据,该站点也在 Prestashop 1.6.1.5 下运行,我使用一个模块“自制”(由我的前任),它使用除其他外, PSWebServiceLibrary.php。当我在站点 B 上更改 PHP 版本(从 5.6 版到 7.0 版)并且我想在站点 A 上使用该模块时,我遇到了一些错误,包括 PSWebServiceLibrary.php 我因此收到以下错误消息:

致命错误:未捕获的异常“PrestaShopWebserviceException”,带有消息“对 PrestaShop Web 服务的调用失败并返回 HTTP 状态 500。这意味着:内部服务器错误。” 在 www.ndd.fr/PSWebServiceLibrary.php:95 堆栈跟踪:

    0 www.ndd.fr/PSWebServiceLibrary.php(297): PrestaShopWebservice->checkStatusCode(500)
    1 www.ndd.fr/modules/orderlist/classes/orderArrayCreator.class.php(145): PrestaShopWebservice->get(Array)
    2 www.ndd.fr/modules/orderlist/controllers/admin/AdminOrderList.php(125): orderArrayCreator->createDistantOrderArray()
    3 www.ndd.fr/classes/controller/Controller.php(178): AdminOrderListController->postProcess()
    4 www.ndd.fr/override/classes/Dispatcher.php(335): ControllerCore->run()
    5 www.ndd.fr/override/classes/Dispatcher.php(107): Dispatcher->dispatch_16()
    6 www.ndd.fr/admin/index.php(58): Dispatcher->dispatch()
    7 {main} thrown in www.ndd.fr/PSWebServiceLibrary.php on line 95

如果我回到5.6版本,我没有问题,模块正常工作。所以这是一个与 PHP 7 版本相关的问题。是否有适用于 PHP v 7.0 的 PSWebServiceLibrary.php 版本?提前感谢您的帮助,因为我是 PHP 的初学者

标签: phpsmartyprestashop-1.6

解决方案


实际上 PrestaShop 1.6.1.5 不是正式的 PHP 7.x 兼容,但是,您应该能够轻松修复此错误:

  1. 编辑文件/classes/webservice/WebserviceRequest.php并在第794行替换:

    if (count(self::$shopIDs)) {

    经过

    if (is_array(self::$shopIDs) && count(self::$shopIDs)) {

  2. 下载最新版本的PSWebServiceLibrary.php在这里

  3. 为确保一切正常,请使用以下代码创建一个新文件 test-ws.php(并输入您的 url/credentials):

    <?php
    
    require_once('./PSWebServiceLibrary.php');
    
    try
    {
        $ws = new PrestaShopWebservice('http://www.yourstore.com', 'YOURWSKEYHERE', false);
        echo '<pre>';
        print_r($ws);
    }
    catch (PrestaShopWebserviceException $ex)
    {
        echo 'Error : '.$ex->getMessage();
    }
    
    ?>
    

    如果它有效,你应该得到类似的东西:

    PrestaShopWebservice Object ( [url:protected] => http://www.yourstore.com [key:protected] => YOURWSKEYHERE [debug:protected] => [version:protected] => unknown )

如果之后仍然出现 500 错误:在 php.ini 配置文件中打开 error_logs 并检查错误日志。或者,您可以尝试在 /config/defines.inc.php 中将 _PS_MODE_DEV_ 设置为 true。


推荐阅读