Prestashop 1.6/1.7:在 "web" public 文件夹中的 PHP 脚本中要求 "autoload.php" 导致错误 500(没有命名空间的脚本)

Prestashop 1.6/1.7: require "autoload.php" in a PHP script in the "web" public folder results in an error 500 (script without namespace)

mydockercontainer:<mysite>/web/ 中,这是我的 NGINX 服务器 Docker 容器的 public 目录,我正在编写一个 PHP 脚本,它包含一个简单的 class,Prestashop 1.6/1.7 之外(站点是 Prestashop 1.7,但出于项目原因我想在 1.6 中编写代码)。

这个“简单class”是:mydockercontainer:<mysite>/web/gateway/gateway.php。如您所见,它不是模块,也不是控制器的覆盖,也不是与 Prestashop 相关的其他东西。这只是一个普通的 PHP 脚本。

但是,这个脚本 gateway.php 需要使用一些 Prestashop 的对象。例如 Order.

当我尝试实例化 Order 时,出现此错误:

Fatal error: Uncaught Error: Class 'Order' not found in /var/www/html/gateway/requestHandler.php:47 Stack trace: #0 /var/www/html/gateway/requestHandler.php(17): RequestHandler->handleOrderUpdate() #1 /var/www/html/gateway/wakeup.php(5): RequestHandler->handleRequest() #2 {main} thrown in /var/www/html/gateway/gateway.php on line 47

所以在这个脚本的开头,我添加了以下行:require_once '../autoload.php';。它引发了一个新错误:ERROR 500 但我无法弄清楚日志。

请注意,我的 PHP 脚本没有任何命名空间,因为它在 Prestashop 之外。

我该怎么做才能在简单的 PHP 中使用对象 Prestashop 1.6/1.7(偏好:1.6)class 例如 Object不是 Prestashop 的脚本 controller/module/etc.?

代码片段

以下代码并不完整,但足以解决问题。

文件:mydockercontainer:<mysite>/web/gateway/gateway.phpweb 是我的 Prestashop 1.7 站点的 public 目录):

<?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 将不起作用。