我有一个站点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的初学者
答案 0 :(得分:1)
独立的PrestaShop 1.6.1.5与PHP 7.x官方不兼容,但是,您应该能够轻松修复此错误:
编辑文件 /classes/webservice/WebserviceRequest.php 并在线 794 替换:
if (count(self::$shopIDs)) {
通过
if (is_array(self::$shopIDs) && count(self::$shopIDs)) {
下载最新版本的 PSWebServiceLibrary.php (here)
为确保一切正常,请使用以下代码创建一个新文件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。