Magento 2의 로컬 설치는 pub / static 폴더에 파일을 생성하지 않습니다


15

방금 MAMP를 통해 로컬로 샘플 데이터 (웹 사이트에서 다운로드하고 작곡가와 함께 설치되지 않은)로 Magento 2 Community Edition을 설치했습니다. 설치 과정이 성공적으로 완료되었지만 .htaccess를 제외한 pub / static 폴더의 모든 파일이 누락되었습니다. 이것은 모든 CSS, js 등이 프론트 엔드와 백엔드 모두에 대해 404를 반환한다는 것을 의미합니다.

운 없이이 문제를 해결하려고 몇 시간을 보냈습니다. 이것이 내가 지금까지 한 일입니다.

  • 변경 Options Indexes FollowSymLinks AllowOverride/MAMP/conf/apache/httpd.conf에서 '모든'에서 '없음'에서 다시 시작 MAMP
  • LoadModule rewrite_module modules/mod_rewrite.sohttpd.conf에서 주석 처리가 제거 되었는지 확인하십시오.
  • MAMP에서 개발 도메인 (magento.dev) 설정
  • php bin/magento setup:static-content:deploy터미널을 사용하여 magento.dev 루트에서 실행 을 시도했습니다 . 그러나 이것은 다음을 반환합니다.

치명적인 오류 : 64 행의 /Applications/MAMP/htdocs/magento.dev/vendor/magento/framework/Locale/Bundle/DataBundle.php에 'Locale'클래스가 없습니다.

  • 주석을 제거하고 RewriteBase /magento.dev 루트 디렉토리의 .htaccess-file에서 RewriteBase를 로 변경했습니다 .
  • 개발 모드에서 마 젠토 설정
  • 캐시를 수동으로 지우고 php bin/magento setup:static-content:deploy다시 실행

대부분의 가이드 및 포럼 게시물은 나에게 실행하도록 지시합니다. php bin/magento setup:static-content:deploy하지만 올바르게 수행하고 있는지 확실하지 않습니다.

운영체제 : OSX 10.11.2

MAMP 버전 : 3.5

PHP 버전 : 7.0

아파치 버전 : 2.4.16

MySQL 버전 : 5.6.25

도움을 주시면 감사하겠습니다.


CentOS 서버에 설치된 2.2.2입니다. 이 페이지의 아무것도 작동하지 않습니다. 스타일을 유지하려면 php bin/magento setup:static-content:deploy -f 80 초 동안 기다려야 합니다 .
Chris K

답변:


15

솔루션 # 1 (XML 파일을 편집하려는 경우)

에서 Magento 2 zip을 다운로드 하고 phpmyadmin 에서 magentocommerce.com/downloaddb 를 생성 하고 htdocs 폴더 에서 zip을 추출하고 싶습니다 . Magento 2를 설치하지만 상점 URL 및 관리 URL에서 localhost 사용 127.0.0.1 을 사용 하지 마십시오 . 설치가 완료 되면 magento를 실행 하지 마십시오 .

이제 Magento 2의 캐시와 세션을 지우거나 삭제하려고합니다. 다음 경로로 이동하여 모든 것을 삭제하십시오.

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

Magento 2가 프로덕션 모드에 있지 않으면 로컬 서버에서 일부 정적 리소스에 대한 심볼릭 링크를 만들려고 시도합니다. ROOT > app > etc > di.xml파일 을 편집하여 Magento 2의 동작을 변경해야 합니다. 열고 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

MAMP, EasyPHP DevServer, Xampp 및 Wampp를 사용하여 로컬 호스트에서 직접 시도한 후 Magento 2를 성공적으로 설치하고 사용했습니다. 자세한 내용을 보려면이 링크를 확인하십시오 : Magento 2 CSS 및 JavaScript가 올바른 폴더에서로드되지 않습니다

솔루션 # 2

Composer를 설치하십시오. 이제 Magento 2 zip을에서 다운로드 하고 phpmyadmin 에서 magentocommerce.com/downloaddb 를 생성 하고 htdocs 폴더 에서 zip을 추출하고 싶습니다 . Magento 2를 설치하지만 상점 URL 및 관리 URL에서 localhost 사용 127.0.0.1 을 사용 하지 마십시오 . 설치가 완료 되면 magento를 실행 하지 마십시오 .

이제 Composer 설치, 정적 콘텐츠 배포, Magento 캐시 지우기 / 플러시 및 Magento 2 블록의 색인을 다시 작성합니다. 위의 모든 작업을 수행하려면 WINDOWS KEY + R을 눌러 RUN 대화 상자를 열고“cmd”를 입력하여 명령 프롬프트를 엽니 다.

" cd PATH_TO_YOUR_MAGENTO2_FILES "를 입력하여 Magento 2 ROOT 디렉토리에 입력하십시오.

위의 디렉토리에서 Composer 설치를 확인 하려면 " composer install "을 입력하십시오.

이 단계에서 오류가 발생하면 Composer 설치를 확인하십시오

이 단계에서는 Magento 저장소에 배포 할 정적 콘텐츠를 설정합니다. 이렇게하려면 " php bin / magento setup : static-content : deploy "를 입력하십시오.

오류가 발생하면 PHP.EXE 및 PHP.INI 환경 변수를 확인하십시오.

CMD에 " php bin / magento cache : flush "를 입력하여 Magento 캐시를 지우거나 비 웁니다 .

마지막으로, Magento Static Blocks를 다시 색인하려면php bin / magento indexer : reindex ”를 입력하십시오.

Magento 2를 성공적으로 설치했습니다.


답변이 수정되었습니다.
Fayyaz Khattak

그레이트! 나는 해결책 1을 시도하고 그것은 나를 위해 일한다 .. 감사 Khatak sb
Muhammad Azeem

에 오신 것을 환영합니다 @MuhammadAzeem
Fayyaz 카탁

@RajaKhoury 천만에요!
Fayyaz Khattak

솔루션 1이 저에게 효과적입니다! 정말 고마워요 !!
Daniel Silva

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

2

intl확장 프로그램이 PHP의 콘솔 버전에로드되지 않은 것 같습니다 . PHP의 apache 및 cli 버전에 동일한 버전 / 설정을 사용하고 있는지 확인하십시오.

MacOsX에는 php 버전이 사전 설치되어 있으며 php를 설치하는 일부 패키지는 터미널 세션에 대한 심볼릭 링크를 변경하지 않습니다. 결과적으로 다른 버전의 PHP를 동시에 설치할 수 있습니다.

추신 : Mac OS에서 방랑자를 사용할 것을 제안합니다. 파일 공유에 nfs를 사용하면 꽤 잘 작동합니다.


아하! 사전 설치된 PHP (cli)는 5.5.30입니다. 사전 설치된 Apache는 2.4.16입니다 (MAMP가 Apache를 별도로 설치하는 경우 MAMP의 아파치 버전을 확인하는 방법을 모르겠습니다). 미리 설치된 버전을 7로 업데이트하고 intl 확장 (cli 또는 mamp?)도 설치해야합니까? 방랑자는 나와 같은 멍청한 놈에게는 너무 진보 된 것처럼 보입니다.
Skovsgaard

나는 맥 관련 질문에 대답 할 수는 없지만 당신의 PHP 버전을 확인하기 위해 적어도 두 가지 방법이 있습니다 : php -v(어떤 버전의 PHP 명령 쇼로 실행) 및 사용 phpinfo.php를을 , PHP의 버전을 웹 서버가 실행 쇼.
Steve Johnson

MAMP는 PHP 7과 Apache 2.2.29를 실행합니다. 내 로컬 컴퓨터는 PHP 5.5.30 및 Apache 2.4.16을 실행합니다. 다음 단계는 로컬 컴퓨터의 PHP를 7로 업데이트하는 것입니까?
Skovsgaard

php7 바이너리의 전체 경로를 사용하십시오
KAndy

2

다른 모든 방법이 실패하면 다음 디렉토리를 정리하십시오.

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

해당 디렉토리에서 심볼릭 링크가 끊어지면 작동합니다.


1
.htaccess는 절대 삭제해서는 안됩니다.
나도이

1

page_cache, di, view_process, 캐시 지우기

그런 다음 폴더와 파일에 적절한 권한을 부여하십시오.

그런 다음 실행 php bin/magento setup:static-content:deploy 루트 폴더에서 하십시오.

술집 / 정적을 확인하십시오.

이것이 도움이되기를 바랍니다.


어디서 어떻게 실행 clear page_cache, di ,view_process, cache합니까? 로컬 설치이므로 내 컴퓨터의 관리자 권한으로 모든 권한 읽기 / 쓰기 권한이 있습니다. 내가 모르는 다른 권한이 있습니까?
Skovsgaard

로컬을 사용하는 경우 루트 폴더에 대한 전체 권한을 부여하는 것보다
vachhani를 완성하십시오

모든 폴더는 var /에 있으며 모든 폴더를 지우고 폴더에 대한 전체 권한을 부여하십시오.
vachhani를 종료하십시오

1

magento2 디렉토리에 설치 composer하고 실행 했습니까 composer init? 그렇지 않은 경우 시도한 다음 명령을 실행하십시오.php bin/magento setup:static-content:deploy


Composer는 내 컴퓨터에 설치되어 있지만 Magento 2를 설치하는 데 사용하지 않았습니다. 웹 사이트에서 압축을 풀고 설치 한 .zip 파일 만 다운로드했습니다. composer initcomposer를 실행하면 composer.json 구성을 설정하라는 메시지가 표시되므로 도움이되지 않습니다.
Skovsgaard
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.