php - 是否有运行 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 的初学者
解决方案
实际上 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(在这里)
为确保一切正常,请使用以下代码创建一个新文件 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。
推荐阅读
- css - 如何在选择中设置菜单图标向下的语言之间的距离?
- neural-network - 如何计算具有多个输出的神经网络中的均方误差?
- vert.x - 节点崩溃后 Vert.x 不公平的 verticle 重新部署
- c# - 断开连接后,lidgren 客户端无法连接
- android - 更新 Xamarin.Forms 会破坏 Android 的 Prism 导航
- java - 使用 Collator 在一行中收集到 TreeMap
- java - 在封闭范围内定义的局部变量 min 必须是 final 或有效 final
- sql-server - 无法让 where 子句处理包含单引号的文本
- elasticsearch - 使用 StormCrawler(和 Elasticsearch)将字段添加到爬网内容
- node.js - mongoose 5.8 和 mongodb 连接应该怎么做?