是否有与PHP v7.0一起运行的PSWebServiceLibrary.php版本?

时间:2019-03-29 14:37:58

标签: php smarty prestashop-1.6

我有一个站点A在Prestashop 1.6.1.5上运行,并且要检索在另一个站点(站点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的初学者

1 个答案:

答案 0 :(得分:1)

独立的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 here

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

    <?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。