1


我需要使用一些 PrestaShop 功能运行 CLI(命令行界面)脚本。更具体地说,我需要运行一些管理控制器。

为此,我需要 PrestaShop 配置文件,但它无法加载配置,因为在脚本执行期间 Admin SuperAdministrator 显然没有登录。

我的问题是:

  • 从命令行运行 PrestaShop 的最佳方式是什么?
  • 如何让 PrestaShop 认为用户在我的 cli 脚本中登录?

主要问题在这里:
PHP Fatal error: Call to a member function isLoggedBack() on a non-object in /var/{apachevirtualhostpath}/public/www/classes/controller/AdminController.php on line 1805

我正在运行 PS 1.5.4.1

我遇到了其他问题,主要是因为域(不适用于 cli),但我已经解决了。

谢谢你。

4

3 回答 3

1

样品:

    //define('PSDIR', '/var/www/prestashop');
    function regen_htaccess() {
      chdir(PSDIR);
      include('config/config.inc.php');
      Tools::generateHtaccess(null, 1);
    }

    function regen_robots() {
      chdir(PSDIR);
      define('_PS_ADMIN_DIR_', 1);
      include('config/config.inc.php');
      $a = new AdminMetaControllerCore();
      $a->generateRobotsFile();
    }

    function clear_cache() {
      chdir(PSDIR);
      define('_PS_ADMIN_DIR_', 1);
      $_POST['empty_smarty_cache'] = 1;
      include("config/config.inc.php");
      $x = new AdminPerformanceControllerCore();
      $x->postProcess();
    }

这里的关键是在需要实例化 admin/ 类时进行设置_PS_ADMIN_DIR_以避免失败。isLoggedBack但在编写你的prestashop-cli.sh之前,你可以先看看 webservices。

于 2015-05-29T03:22:17.997 回答
0

使用最新版本的提示/index.php/install/index_cli.php创建脚本来加载 PrestaShop 框架,然后直接运行所需的命令。

例如,从 PrestaShop 1.5.6.1 开始,如果您想删除演示产品和订单并从命令行初始化商店,您可以使用如下内容:

警告:此脚本将删除您的数据!不要在不了解它的作用的情况下复制和粘贴。

#!/usr/bin/php
<?php

# Initialize PrestaShop framework.  Replace _PS_ROOT_DIR_ with proper path.
require_once(_PS_ROOT_DIR_.'config/config.inc.php');

# Include any dependencies that are not already loaded.
require_once(_PS_MODULE_DIR_.'pscleaner/pscleaner.php');

# Execute PrestaShop command(s).
PSCleaner::truncate('catalog');
PSCleaner::truncate('sales');
于 2013-12-22T08:11:00.340 回答
0

这个官方文档页面是最近的,你可能还没有看到它:

http://doc.prestashop.com/display/PS15/Installing+PrestaShop+using+the+command+line

干杯!

于 2013-06-28T15:16:17.743 回答