스크립트 및 CSS에 대한 Magento 2 404 오류


39

https://github.com/magento/magento2 에서 Magento 2를 다운로드하여 설치했습니다.

그러나 http : // localhost / magento2 / pub / static / 에있는 스크립트 및 CSS 에 대해 404 오류가 발생합니다 .

Apache rewrite 엔진이 켜져 있는지 확인했습니다. 그러나 여전히 css 및 js 파일이로드되지 않습니다.

브라우저에서 직접 파일에 액세스하려고하면 다음 예외가 발생합니다.

Cannot create a symlink for "D:/xampp/htdocs/magento2/lib/web/mage/calendar.css" and place it to "D:/xampp/htdocs/magento2/pub/static/frontend/Magento/blank/en_US/mage/calendar.css" Warning!symlink(): Cannot create symlink, error code(1314)
#0 D:\xampp\htdocs\magento2\lib\internal\Magento\Framework\Filesystem\Directory\Write.php(155): Magento\Framework\Filesystem\Driver\File->symlink('D:/xampp/htdocs...', 'D:/xampp/htdocs...', Object(Magento\Framework\Filesystem\Driver\File))
#1 D:\xampp\htdocs\magento2\lib\internal\Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink.php(30): Magento\Framework\Filesystem\Directory\Write->createSymlink('lib/web/mage/ca...', 'frontend/Magent...', Object(Magento\Framework\Filesystem\Directory\Write))
#2 D:\xampp\htdocs\magento2\lib\internal\Magento\Framework\App\View\Asset\Publisher.php(65): Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink->publishFile(Object(Magento\Framework\Filesystem\Directory\Write), Object(Magento\Framework\Filesystem\Directory\Write), 'lib/web/mage/ca...', 'frontend/Magent...')
#3 D:\xampp\htdocs\magento2\lib\internal\Magento\Framework\App\View\Asset\Publisher.php(49): Magento\Framework\App\View\Asset\Publisher->publishAsset(Object(Magento\Framework\View\Asset\File))
#4 D:\xampp\htdocs\magento2\lib\internal\Magento\Framework\App\StaticResource.php(118): Magento\Framework\App\View\Asset\Publisher->publish(Object(Magento\Framework\View\Asset\File))
#5 D:\xampp\htdocs\magento2\lib\internal\Magento\Framework\App\Bootstrap.php(245): Magento\Framework\App\StaticResource->launch()
#6 D:\xampp\htdocs\magento2\pub\static.php(13): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\StaticResource))
#7 {main}

운영 체제가 Windows 7이고 xampp 서버를 실행하고 있습니다.


이것은 2015 년에 요청되었다는 것을 알고 있지만 다른 사람들이 여전히이 게시물을보고있는 경우 git에서 magento를 얻지 않아야합니다. 풀 요청을 제출하는 경우에만이 작업을 수행하십시오. Magento는 사이트의 다운로드 섹션에서 다운로드하거나 composer를 통해 설치해야합니다.
Dominic Xigen

답변:


86

프로덕션 모드가 아닌 경우 Magento 2는 일부 정적 리소스에 대한 심볼릭 링크를 만들려고 시도합니다. 다음을 수행하여 해당 동작을 변경할 수 있습니다.

  1. 섹션을 열고 app/etc/di.xml찾으십시오 virtualType name="developerMaterialization". 이 섹션에는 name="view_preprocessed"수정하거나 삭제해야 할 항목 이 있습니다. 내용을에서 Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink로 변경하여 수정할 수 있습니다Magento\Framework\App\View\Asset\MaterializationStrategy\Copy

  2. 기존 symlink를 제거하려면 pub / static에서 파일을 삭제하십시오. .htaccess파일 을 삭제하지 않도록주의 할 수 있습니다 .

심볼릭 링크의 오류를 해결해야합니다.


2
pub / static 폴더를 삭제하면 효과가 있습니다.
Adam Moss

4
내 경우에는 술집 / 정적 내용을 삭제하는 것으로 충분하지 않습니다. 위의 답변에서 언급 한대로 Symlink를 Copy로 변경해야 피부가 잘로드됩니다!
Haijerome

2
매력처럼 일했다 ... !!!!
Neeraj Garg

2
/ pub / static 폴더를 삭제하지 않아도 나에게는 효과가 없었습니다. 다른 아이디어가 있습니까?
goncalotomas

2
나를 위해 작동하지 않습니다 :-(
Alaa M. Jaddou

7

나는이 문제에 직면하여 알아 내려고 노력했다. Chris O'Toole에 동의합니다. 추가 단계를 추가하겠습니다. 내 단계는

  1. app / etc / di.xml을 열고 Symlink를 검색하십시오. 다음 섹션에 있는지 확인하십시오.
<virtualType name="developerMaterialization" type="Magento\Framework\App\View\Asset\MaterializationStrategy\Factory">
                <arguments>
                    <argument name="strategiesList" xsi:type="array">
                        <item name="view_preprocessed" xsi:type="object">Magento\Framework\App\View\Asset\MaterializationStrategy\Copy</item>
                        <item name="default" xsi:type="object">Magento\Framework\App\View\Asset\MaterializationStrategy\Copy</item>
                    </argument>
                </arguments>
            </virtualType>

Symlink를 단어 복사로 바꾸십시오. 저장하기.

  1. pub / static에서 모든 폴더를 삭제하십시오. .htaccess 및 기타 파일을 삭제하지 마십시오.

  2. xampp를 관리자 권한으로 실행하십시오. 관리자 권한으로 명령 줄을 실행하십시오. 를 실행하십시오 grunt exec:<theme name>.

여기에 이미지 설명을 입력하십시오

당신은 그것이 잘 실행되고 볼 수 있습니다.

그럼 당신은 실행할 수 있습니다 grunt less:<theme name>

여기에 이미지 설명을 입력하십시오

마지막으로 당신은 실행할 수 있습니다 grunt watch

여기에 이미지 설명을 입력하십시오

적은 파일 (_theme.less 또는 _extend.less)을 변경하면 pub / static 폴더에 style-l 및 style-m css 파일이 자동으로 생성됩니다.

Windows 10에서 magento 2.1을 실행하고 있습니다.


실제로 우리는 첫 단계가 필요하지 않습니다.
cha

2

Magento가 이러한 새 정적 파일을 만든 후에 파일 권한을 업데이트해야합니다. 그들은 www-data가 소유하지 않으므로 404를 줄 것입니다.


1

내이 때문에 내 경우에는 그것은 아니었다 app/etc/di.xml했던 Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink같은 @Chrish에 의해 언급했다. 내 모듈 중 하나가 내 .phtml파일에 스크립트 오류가 있었기 때문 입니다. .phtml파일 에서 코드를 확인하는 것이 좋습니다 . 내 경우에는 스크립트 파일을 수정하여 해결되었습니다 initialize.phtml.


0

pub / static 및 var / 폴더에 대해 mod_php를 사용하여 아파치에 대한 올바른 권한을 사용하는 것이 중요하다는 것을 알았습니다. Alan Storm 기사 http://alanstorm.com/magento_2_adding_frontend_files_to_your_module에서

find /path/to/magento2/pub/static -exec chmod 777 '{}' +
find /path/to/magento2/var/ -exec chmod 777 '{}' + 

서버 터미널에서 실행해야합니다. 스크립트와 이미지에 대한 404 오류가 수정되었습니다.

ps 그러나 그것은 리눅스를위한 것입니다.


당신은 또한 수chmod -R 777 /path/to/magento2/pub/static /path/to/magento2/var
nick.graziano

0

이 작업을 수행하는 올바른 방법은 명령 줄에서 magento 디렉토리로 이동 한 후 다음 명령을 실행하는 것입니다.

php bin/magento setup:static-content:deploy

var/cache디렉토리를 비우고 확인하십시오.


0

아래의 모든 파일을 삭제했습니다 pub/static/*. Magento는 페이지를로드 할 때 자동으로 정적 파일을 생성합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.