2013-06-24 74 views
1


我需要使用一些PrestaShop功能運行CLI(命令行界面)腳本。更具體地說,我需要運行一些管理控制器。使用php-cli運行Prestashop

爲了做到這一點,我需要的PrestaShop配置文件,但它因爲在腳本執行管理超級管理員無法加載配置顯然沒有登錄

我的問題是:

  • 是哪個從命令行運行PrestaShop的最佳方式是什麼?
  • 如何讓PrestaShop認爲用戶在我的cli腳本內登錄?

的主要問題是在這裏:
PHP致命錯誤:調用一個成員函數isLoggedBack()在/var/{apachevirtualhostpath}/public/www/classes/controller/AdminController.php非對象上在線1805

我正在運行PS 1.5.4.1

我有其他問題,主要是因爲域(這是不適用於cli),但我已經解決了他們。

謝謝。

回答

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'); 
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(); 
    } 

這裏的關鍵是設置_PS_ADMIN_DIR_避免isLoggedBack失敗時,你需要實例化管理/班。 但是在編寫你的prestashop-cli.sh之前,你可以看看webservices。