Существует ли версия PSWebServiceLibrary.php, работающая с PHP v7.0? - PullRequest
1 голос
/ 29 марта 2019

У меня есть сайт A, который работает на Prestashop 1.6.1.5, и для извлечения данных на другом сайте (сайт B), который также работает под Prestashop 1.6.1.5, я использую модуль "homemade" (моего предшественника), который использует, средидругие вещи, PSWebServiceLibrary.php.Когда я меняю версию PHP (с версии 5.6 на версию 7.0) на сайте B и хочу использовать модуль на сайте A, у меня возникают некоторые ошибки, включая PSWebServiceLibrary.php, поэтому у меня появляется следующее сообщение об ошибке:

Неустранимая ошибка: необработанное исключение «PrestaShopWebserviceException» с сообщением «Этот вызов веб-служб PrestaShop завершился неудачно и вернул 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, у меня нет проблем, модуль работает нормально.Так что это проблема, связанная с версией 7 PHP.Существует ли версия PSWebServiceLibrary.php, которая работает с PHP v 7.0?Заранее спасибо за вашу помощь, потому что я новичок в PHP

1 Ответ

1 голос
/ 29 марта 2019

Действительно 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 / учетные данные):

    <?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: включите error_logs в вашем файле конфигурации php.ini и проверьте журналы ошибок. Кроме того, вы можете попытаться установить для _PS_MODE_DEV_ значение true в /config/defines.inc.php.

...