Skip to content

Instantly share code, notes, and snippets.

@matchaxnb
Created May 20, 2015 14:56
Show Gist options
  • Star 18 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save matchaxnb/ecf52cf22a158dd70444 to your computer and use it in GitHub Desktop.
Save matchaxnb/ecf52cf22a158dd70444 to your computer and use it in GitHub Desktop.
Regenerate images in Prestashop from command line
<?php
define('_PS_ROOT_DIR_', '/path/to/prestashop/root');
define('_PS_ADMIN_DIR_', _PS_ROOT_DIR_.'admin_folder');
require(_PS_ADMIN_DIR_.'/../config/config.inc.php');
require(_PS_ADMIN_DIR_.'/functions.php');
class Employee2 extends EmployeeCore
{
public function isSuperAdmin()
{
return true;
}
public function isLoggedBack()
{
return true;
}
}
class AdminImagesController extends AdminImagesControllerCore
{
function regenerate()
{
$this->_regenerateThumbnails('all', true);
}
}
$context = Context::getContext();
$context->employee = new Employee2(1);
//print_r($context);
$aic = new AdminImagesController();
echo "Starting regeneration\n";
$aic->regenerate();
echo "Done regenerating\n";
?>
@evgenij-sobolev
Copy link

Great job!
Could you update the script for prestop 1.7.6.x?

@sneznaovca
Copy link

Great job!
Could you update the script for prestop 1.7.6.x?

It works also for 1.7.6.x. Do you have problem? Could you paste your error messages?

@itcfig
Copy link

itcfig commented Jun 6, 2020

I am sorry for the stupid question, but how do I run this code in Prestashop ?

@matchaxnb
Copy link
Author

You put it somewhere on the server and call it using a cronjob. I'm happy to see people using that snippet.

@itcfig
Copy link

itcfig commented Jun 8, 2020

Thank you for answering. I am happy that we have people like you that wants to be usefull to other people like me. =) So, you mean all I need to do is to upload this file into a folder on my root and create a cron job calling this exact file path(for example, https://mysite.com/folder/regenerate-images.php) ? No need to change anything on the code ? Just wanna make sure I did right. Thank you, again. ;)

@evgenij-sobolev
Copy link

Great job!
Could you update the script for prestop 1.7.6.x?

It works also for 1.7.6.x. Do you have problem? Could you paste your error messages?

Hello!
I have this error on prestashop 1.7.6.7:

PHP Warning: require(/path/to/prestashop/rootadmin_folder/../config/config.inc.php): failed to open stream: No such file or directory i n /home/myuser/www/mysite/regenerate-images.php on line 5
PHP Fatal error: require(): Failed opening required '/path/to/prestashop/rootadmin_folder/../config/config.inc.php' (include_path='.:/u sr/share/pear:/usr/share/php') in /home/myuser/www/mysite/regenerate-images.php on line 5

@Socrapop
Copy link

Socrapop commented Feb 19, 2021

Thank you for this snippet ! I was really bothered by Prestashop not having a native bulk thumbs regeneration for big ecommerce... You saved my day :)

@evgenij-sobolev, you have an error because you need to change the 2 first lines.
The first one needs to point to the root folder (from the location of your file).
Same thing for the admin folder, you have to rename it as it is in your prestashop install (admin123xyz...) ;)

@matchaxnb
Copy link
Author

I'm actually amazed this snippet still works after all these years. :)

@matteolavaggi
Copy link

Hi, thanks for the script any idea to limit the rgeneration process only to some product_id?

@falydev
Copy link

falydev commented Mar 24, 2021

@dev-4458
Copy link

@dkarvounaris
Copy link

dkarvounaris commented Oct 26, 2022

If you are gonna use this, and you gonna place it somewhere under your public_html/http_docs/whatever public folder accessible over http, you should add that bit on top of the script, as otherwise you may be introducing a security issue on your server:

if (php_sapi_name() !== 'cli') {
    die();
}

@PatriceVigier
Copy link

@PatriceVigier
Copy link

regenerate-images.php works on Prestashop 1.7.8.9
Thank you++++

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment