Good news, everyone!
Понадобилось перенести сайт с одного сервера на другой. Хостер REG.RU предоставляет услугу создания полного бэкапа, именно ей я и воспользовался. Затем залил файлы на новый хостинг, поправил файл конфигурации /includes/configure.php
и импортировал базу данных через phpMyAdmin. Сайт заработал, но заботы были еще впереди.
Отключение аутентификации Apache
В файле /admin/.htaccess
удалите следующие строки:
##### OSCOMMERCE ADMIN PROTECTION - BEGIN ##### AuthType Basic AuthName "osCommerce Online Merchant Administration Tool" AuthUserFile /web/htdocs/YOUR PATH TO ADMIN DIRECTORY/.htpasswd_oscommerce Require valid-user ##### OSCOMMERCE ADMIN PROTECTION - END #####Правда, у меня все выглядело несколько иначе, но принцип понятен.
Сброс пароля администратора
Открыть phpMyAdmin и выбрать таблицу administrators
. Из консоли выполнить следующий скрипт:
INSERT INTO `administrators` VALUES (1, 'admin', '55340159dccd929e0cd2abd72cfe799a:14');В результате добавится новый пользователь с логином "admin" и паролем "admin". После успешного входа не забыть сменить пароль.
После добавления товара его невозможно отредактировать
Кроме того, в режиме отображения всех товаров на новом товаре все просто зависало.
В моем случае проблема возникла в файле /admin/includes/applications/products/pages/main.php
из-за этой стоки:
newCell = newRow.insertCell(2); newCell.innerHTML = htmlSpecialChars(record.products_last_modified);А все из-за того, что
record.products_last_modified
после добавления нового товара равен null
;
Я исправил эту ошибку следующим образом:
if (record.products_last_modified !== null) newCell.innerHTML = htmlSpecialChars(record.products_last_modified); else newCell.innerHTML = htmlSpecialChars(record.products_date_added);
Неудобный порядок сортировки
Порядок сортировки общего списка товаров можно изменить в файле /admin/includes/applications/products/classes/products.php
.
Мне нравится, когда новые товары отображаются первыми. Для этого нужно просто заменить все вхождения order by pd.products_name
на order by pd.products_id desc
.
Не создаются изображения предпросмотра
С этой ошибкой я ковырялся особенно долго. Проблема была в том, что на новом хостинге стоял запрет на использование функции exec
. Видимо, дело обычное для виртуальных хостингов. Кстати, из этого можно предположить, что раньше сайт хостился на выделенном сервере.
Вот, что я обнаружил в логе:
PHP Warning: exec() has been disabled for security reasons in /admin/includes/classes/image.php on line 52
Кстати, лог находится в файле /includes/work/oscommerce_errors.log
.
Рекомендую его регулярно проверять и удалять.
Как оказалось, ошибка кроется в функции resize
(см. /admin/includes/classes/image.php
).
Давайте рассмотрим эту функцию более подробно:
function resize($image, $group_id) { if (osc_empty(CFG_APP_IMAGEMAGICK_CONVERT) || !file_exists(CFG_APP_IMAGEMAGICK_CONVERT)) { return $this->resizeWithGD($image, $group_id); } ... exec(escapeshellarg(CFG_APP_IMAGEMAGICK_CONVERT) . ' -resize ' ... }В случае если скрипт находит программу конвертации изображений, путь к которой расположен в константе
CFG_APP_IMAGEMAGICK_CONVERT
, то он пытается запустить эту программу. Если команда exec
отключена, то происходит ошибка.
Вот исправленный вариант:
function resize($image, $group_id) { if (exec('echo EXEC') != 'EXEC' || osc_empty(CFG_APP_IMAGEMAGICK_CONVERT) || !file_exists(CFG_APP_IMAGEMAGICK_CONVERT)) { return $this->resizeWithGD($image, $group_id); } ... }На этом, пожалуй, пока все.
ЗЫ Оставайтесь голодными. Оставайтесь безрассудными. Всем большое спасибо (C)