Здравствуй, уважаемый друг!

Кажется, ты используешь AdBlock. Этот проект развивается и существует за счет доходов от рекламы.
Добавь, пожалуйста, нас в исключения.

Спасибо за понимание.

Установка OCMOD модулей на Opencart 2.x на localhost (denwer) без FTP

Автор: в категории Статьи о php 8 комментариев

Работая с интернет магазином на Opencart 2 на локальном хосте (я использую, например, Denwer), вы можете столкнутся со сложностью установки OCMOD модулей, т.к. установщик требует настроенного FTP доступа, а в пакете Denwer’a отсутствует FTP server.

Opencart extension installer ошибка ftp

Таким образом, разработчик не может установить модификации на Opencart 2 используя стандартный Extension Installer. Но для решения этой проблемы существует решение, достаточно простое и красивое. Достаточно лишь модифицировать несколько строк кода!

Итак, для изменения алгоритма работы установщика дополнений в Opencart 2.x необходимо модифицировать файл admin/controller/extension/installer.php

Далее необходимо найти строку, где указан шаг с использование FTP соединения для копирования файлов дополнения на сервер (~133 line):

'url'  => str_replace('&', '&', $this->url->link('extension/installer/ftp', 'token=' . $this->session->data['token'], 'SSL')),

Как видим в троке идет обращение к функции FTP, соответственно, для обхода данного шага нам необходимо изменить имя вызываемой функции на имя нашей функции, которую мы добавим в файл далее. Для этого заменим вышеупомянутую строку на следующую:

'url'  => str_replace('&', '&', $this->url->link('extension/installer/localcopy', 'token=' . $this->session->data['token'], 'SSL')),

После этого нам необходимо добавить собственно саму функцию localcopy(), код которой расположен ниже, в любое удобное место, например, перед строкой (~535 line):

public function clear() {

Размещаем код функции localcopy() и установщик расширений OpenCart 2.x будет работать без настроек FTP!

public function localcopy() {
	$this->load->language('extension/installer');
	$json = array();

	if (!$this->user->hasPermission('modify', 'extension/installer')) {
		$json['error'] = $this->language->get('error_permission');
	}

	$directory = DIR_UPLOAD . str_replace(array('../', '..\\', '..'), '', $this->request->post['path']) . '/upload/';
	if (!is_dir($directory)) {
		$json['error'] = $this->language->get('error_directory');
	}

	if (!$json) {
	// Get a list of files ready to upload
	$files = array();
	$path = array($directory . '*');

		while (count($path) != 0) {
			$next = array_shift($path);
			foreach (glob($next) as $file) {
				if (is_dir($file)) {
					$path[] = $file . '/*';
				}
				$files[] = $file;
			}
		}

	$root = dirname(DIR_APPLICATION).'/';

		foreach ($files as $file) {
		// Upload everything in the upload directory
		$destination = $root.substr($file, strlen($directory));

			if (is_dir($file)) {
			$list = glob(rtrim($destination, '/').'/*');

				if (!file_exists($destination)) {
					if (!mkdir($destination)) {
						$json['error'] = sprintf($this->language->get('error_ftp_directory'), $destination);
					}
				}
			}

			if (is_file($file)) {
				if (!copy($file, $destination)) {
					$json['error'] = sprintf($this->language->get('error_ftp_file'), $file);
				}
			}
		}
	}

	$this->response->addHeader('Content-Type: application/json');
	$this->response->setOutput(json_encode($json));
}

Надеюсь данная статья была полезной и вы нашли ответ, который искали. Ставте like, подписывайтесь, впереди еще много интересного!

comments powered by HyperComments

Не забудь подписаться на группы в социальных сетях, чтобы всегда быть вкурсе последних событий!

Алекс
2015-08-25 12:54:44
Вылетает вот такая ошибка. Как то можно это решить?
Nikita Sp
2015-08-25 12:56:58
Варианты где может быть ошибка: 1) допустили ошибку при изменении файла по данной инструкции; 2) Файл модифицируется через vqmod и возможно там конфликт возникает (нужно смотреть файл кеша vqmod/cache/файл.php); 3) Неверные параметры доступа к папкам (chmod) Начните проверку с п.3.
Алекс
2015-08-25 16:22:50
Параметры доступа верные. Все перепроверил. По первому пункту перепроверил. Вроде тоже все верно. Можете конкретно рассказать по второму пункту. Не совсем понял. Также могу сказать на сервере не работает функция ftp_conect. Поэтому Ваш метод очень сильно заинтиресовал. Могу прислать сам файл.
Nikita Sp
2015-08-25 16:23:48
Дело в том что сам файл не особо поможет. В разделе контактов вы можете найти форму отправки мне письма. Отправьте доступ FTP и ссылку на сайт и я посмотрю в чем проблема.
Алекс
2015-08-25 18:24:20
Хорошо. Сейчас пришлю
Mnac Hayrapetyan
2016-04-21 03:43:34
Спасибо.
Денис Красноперов
2016-08-29 11:23:54
Спасибо, помогло
Роман Щербань
2016-09-24 20:26:21
Помогло!)
Вверх!

Меню блога

Категории блога

Облако тегов