Місцева установка Magento 2 не створює файлів у папці pub / static


15

Я щойно встановив Magento 2 Community Edition із зразковими даними (завантажені з їх веб-сайту та не встановлені разом із композитором) локально через MAMP. Процес установки був успішним, але всі файли в папці pub / static відсутні, крім .htaccess. Це означає, що всі css, js тощо повертають 404 як для фронтеду, так і для бекенда.

Я кілька годин намагався виправити це без удачі. Це те, що я робив до цього часу:

  • Options Indexes FollowSymLinks AllowOverrideУ /MAMP/conf/apache/httpd.conf і перезапущено MAMP змінено з "None" на "All".
  • Переконайтесь, що LoadModule rewrite_module modules/mod_rewrite.soце не коментується в httpd.conf
  • Налаштувати домен розробки (magento.dev) в MAMP
  • Спробував працювати php bin/magento setup:static-content:deployв корені magento.dev за допомогою терміналу. Однак це повертає:

Фатальна помилка: Клас "Locale" не знайдено в /Applications/MAMP/htdocs/magento.dev/vendor/magento/framework/Locale/Bundle/DataBundle.php у рядку 64

  • Без коментарів і змінено RewriteBase RewriteBase /у .htaccess-файл у кореневому каталозі magento.dev.
  • Встановіть Magento в режимі розробки
  • Очищення кешу вручну та запуск php bin/magento setup:static-content:deployзнову

Більшість посібників та дописів на форумі кажуть мені працювати: php bin/magento setup:static-content:deployале я не впевнений, чи правильно це роблю.

ОС: OSX 10.11.2

Версія MAMP: 3.5

Версія PHP: 7.0

Версія Apache: 2.4.16

Версія MySQL: 5.6.25

Будь-яка допомога буде вдячна.


Я на 2.2.2, встановлений на сервері CentOS. На цій сторінці нічого не працює. Щоб мати будь-який стиль, я повинен запустити php bin/magento setup:static-content:deploy -f і почекати 80 секунд.
Кріс К

Відповіді:


15

РІШЕННЯ №1 (ЯКЩО Ви хочете редагувати XML-файл)

Я хотів би, щоб ви завантажили Magento 2 zip magentocommerce.com/download, створили новий db у phpmyadmin , витягніть zip у папку htdocs . Встановіть Magento 2, але не використовуйте localhost використання 127.0.0.1 в магазині та в адміністраторі. Після успішної установки НЕ запускайте магент.

Тепер ми будемо очищати / видаляти кеші та сеанси Magento 2. Переходимо до наступних шляхів та видаляємо все:

ROOT > var > cache > *DELETE ALL*
ROOT > var > page_cache > *DELETE ALL*
ROOT > var > session > *DELETE ALL*

Коли Magento 2 не знаходиться у режимі виробництва, він спробує створити символьні посилання для деяких статичних ресурсів на локальному сервері. Ми повинні змінити таку поведінку Magento 2, відправивши редагування ROOT > app > etc > di.xmlфайлу. Відкрийте di.xmlулюблений редактор коду, знайдіть virtualType name="developerMaterialization"розділ. У цьому розділі нижче ви знайдете елемент, <item name="view_preprocessed" xsi:type="object">який потрібно змінити. Ви можете змінити його, змінивши наступний вміст:

Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink

До:

Magento\Framework\App\View\Asset\MaterializationStrategy\Copy

Останній крок, також видаліть старі файли, створені в ROOT > pub > static > DELETE ALL EXCEPT .HTACCESS

Я особисто спробував це на своєму localhost за допомогою MAMP, EasyPHP DevServer, Xampp та Wampp та успішно встановив і використовував Magento 2. Для подальшого ознайомлення можна ознайомитись за цим посиланням: Magento 2 CSS та JavaScript не завантажується з правильної папки

РІШЕННЯ №2

Встановити композитор. Тепер я хотів би, щоб ви завантажили zip Magento 2 magentocommerce.com/download, створили новий db у phpmyadmin , витягніть zip у папку htdocs . Встановіть Magento 2, але не використовуйте localhost використання 127.0.0.1 в магазині та в адміністраторі. Після успішної установки НЕ запускайте магент.

Тепер ми перевіримо встановлення композитора, розгорнемо статичний вміст, очистимо / очистимо кеш Magento та повторно встановимо блоки Magento 2. Щоб виконати всі вищезазначені дії, натисніть WINDOWS KEY + R, щоб відкрити діалогове вікно RUN, і введіть “cmd”, щоб відкрити командний рядок.

Введіть “ cd PATH_TO_YOUR_MAGENTO2_FILES ” для введення в каталог Magento 2 ROOT.

Тепер, щоб перевірити встановлення композитора у вищевказаному каталозі, введіть " встановити композитор ".

Якщо ви отримаєте помилку на цьому кроці, будь ласка, перевірте встановлення композитора

На цьому кроці ми налаштовуємо статичний вміст для розміщення в нашому магазині Magento. Для цього введіть “ php bin / magento setup: static-content: speak ”.

Якщо ви отримаєте помилку, перевірте свою PHP.EXE та PHP.INI змінну середовища

Очистити / змити кеш-пам'ять Magento, ввівши “ php bin / magento cache: flush ” у CMD.

І нарешті, до статичних блоків Reindex Magento введіть “ php bin / magento indexer: reindex ”.

Ви закінчили успішну установку Magento 2.


Відповідь відредаговано.
Фаяз Хаттак

Зробіть! Я спробував рішення 1, і це працює на мене .. Дякую Хатаку sb
Muhammad Azeem

Ласкаво просимо @MuhammadAzeem
Fayyaz Khattak

@RajaKhoury Безкоштовно!
Файяз Хаттак

Рішення 1 працює для мене! Дякую вам дуже !!
Даніель Сільва

5

Спробуйте запустити команду нижче

php bin/magento setup:static-content:deploy

І якщо при виконанні цієї команди вона створює помилки, як, наприклад, файл відсутній, як ви вже сказали, порівняйте структуру файлу проекту зі свіжою magento2файловою структурою. Якщо у вашому проекті відсутній якийсь файл, скопіюйте відповідний файл у свій проект.

А якщо ви маєте будь-яку іншу помилку, то опублікуйте помилку у своєму питанні, щоб хтось міг відповісти на ваше запитання.


Дякую за швидку відповідь. Я це зроблю. Де саме і як запустити цю команду?
Skovsgaard

@Skovsgaard ви можете запустити цю команду зі свого терміналу, але переконайтеся, що ви знаходитесь в каталозі magento2 з терміналу
Keyur Shah

Здається, що файлів немає. Встановлений Magento, очевидно, містить більше файлів, які пов'язані з процесом встановлення. Я отримую цю помилку: Fatal error: Class 'Locale' not found in /Applications/MAMP/htdocs/magento.dev/vendor/magento/framework/Locale/Bundle/DataBundle.php on line 64після запуску php bin/magento setup:static-content:deployв кореневій директорії.
Skovsgaard

Я не дуже допомагав. Вибачте.
Skovsgaard

2

Схоже, intlрозширення не завантажено у консольну версію php. Переконайтеся, що ви використовуєте ту саму версію / налаштування для apache та cli версії php.

MacOsX має попередньо встановлену версію php, а деякі пакети, що встановлюють php, не змінюють симпосилання для термінального сеансу. Як результат, ви можете мати іншу версію php, встановлену за один і той же час.

PS: Я пропоную використовувати бродягу на Mac OS. він працює досить добре, якщо використовувати nfs для обміну файлами


Ага! Попередньо встановлений php (cli) становить лише 5.5.30. Попередньо встановлена ​​Apache 2.4.16 (я не знаю, як перевірити апаш-версію MAMP, якщо MAMP також встановлює Apache окремо). Тож мені доведеться оновити попередньо встановлену версію до 7, а також встановити розширення intl (cli чи mamp?)? Бродячий здається надто просунутим для нооба, як я.
Skovsgaard

Я не можу відповісти на специфічні для Mac питання, але є принаймні два способи перевірити версію PHP: php -v(яка показує, у якій версії виконуються команди PHP) та за допомогою phpinfo.php , який показує, в якій версії PHP працює веб-сервер.
Стів Джонсон

Гаразд, тому MAMP запускає PHP 7 та Apache 2.2.29. Моя локальна машина працює на PHP 5.5.30 та Apache 2.4.16. Отже наступним кроком є ​​оновлення PHP локальної машини до 7?
Skovsgaard

Спробуйте скористатися повним шляхом до бінарного
php7

2

Якщо все інше не вдається, обріжте ці каталоги:

rm -rf pub/static/*    # DO NOT DELETE .htaccess
rm -rf var/view_preprocessed/*
php bin/magento setup:static-content:deploy

Це спрацює, якщо ви зламали символічні посилання на цих дрірах.


1
.htaccess ніколи не слід видаляти. Я також робив цю помилку і витрачав години
Тахір Ясін

1

очистити сторінку_cache, di, view_process, кеш

потім надати належний дозвіл папкам та файлам.

потім запустіть php bin/magento setup:static-content:deployіз вашої кореневої папки.

перевірити паб / статику.

Я сподіваюся, що це вам допоможе.


Куди і як бігати clear page_cache, di ,view_process, cache? Це локальна установка, тому як адміністратор супер мого комп’ютера, у мене є всі дозволи на читання / запис. Чи є інші дозволи, про які я не знаю?
Skovsgaard

якщо ви використовуєте локальний, ніж даєте повний дозвіл на root-папку
відмовте вачані

всі папки знаходяться у варі / очистити всі папки та дати повний дозвіл на папку.
заперечуйте вачані

1

Ви встановили composerта запустили composer initв каталог magento2? Якщо ні, спробуйте, тоді запустіть командуphp bin/magento setup:static-content:deploy


Композитор встановлений на моїй машині, так, але я не використовував його для встановлення Magento 2. Я просто завантажив .zip з їх веб-сайту, розпакував і встановив. Якщо я запускаю composer initкомпозитор, попросить мене встановити composer.json config, тож я думаю, це не допоможе.
Skovsgaard
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.