如何解决Prestashop 1.6/1.7:在“web”公共文件夹中的 PHP 脚本中需要“autoload.php”导致错误 500没有命名空间的脚本
在 mydockercontainer:<mysite>/web/
中,这是我的 Nginx 服务器 Docker 容器的公共目录,我正在编写一个 PHP 脚本,它包含一个简单的类,来自 Prestashop 1.6/1.7(站点是 Prestashop 1.7,但我想要出于项目原因,在 1.6 中编写代码)。
这个“简单的类”是:mydockercontainer:<mysite>/web/gateway/gateway.PHP
。正如你所看到的,它不是一个模块,也不是一个控制器的覆盖,或者其他与 Prestashop 相关的东西。它只是一个普通的 PHP 脚本。
然而,这个脚本 gateway.PHP
需要使用一些 Prestashop 的对象。例如Order
。
当我尝试实例化 Order
时,出现此错误:
致命错误:未捕获错误:在 /var/www/html/gateway/requestHandler.PHP:47 中找不到类“Order” 堆栈跟踪:#0 /var/www/html/gateway/requestHandler.PHP(17) : RequestHandler->handleOrderUpdate() #1 /var/www/html/gateway/wakeup.PHP(5): RequestHandler->handleRequest() #2 {main} 扔在 /var/www/html/gateway/gateway.PHP第 47 行
因此在此脚本的开头,我添加了以下行:require_once '../autoload.PHP';
。它引发了一个新错误:ERROR 500 但我无法弄清楚日志。
请注意,我的 PHP 脚本没有任何命名空间,因为它在 Prestashop 之外。
我该怎么做才能在不是 Prestashop 控制器/模块/等的简单 PHP 脚本中使用对象 Prestashop 1.6/1.7(偏好:1.6)类,例如 Object
。 ?
代码片段
文件:mydockercontainer:<mysite>/web/gateway/gateway.PHP
(web
是我的 Prestashop 1.7 站点的公共目录):
<?PHP
require_once '../autoload.PHP';
class Gateway {
private $request;
private function handleOrderUpdate() {
$ps_order = new Order($this->request['id']);
}
}
解决方法
为了启动 Prestashop 核心并在外部脚本中使用 PS 对象,您需要包含
../config/config.inc.php
包含 autoload.php 将不起作用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。