Lỗi Magento 2 404 cho tập lệnh và css


39

Tôi đã tải xuống và cài đặt Magento 2 từ https://github.com/magento/magento2

Nhưng tôi gặp lỗi 404 cho các tập lệnh và cs nằm trong http: // localhost / magento2 / pub / static /

Tôi đã kiểm tra, công cụ viết lại Apache đang bật. Tuy nhiên, tập tin css và js không tải.

Khi tôi cố gắng truy cập một tệp trực tiếp từ trình duyệt, nó sẽ đưa ra ngoại lệ sau.

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}

Hệ điều hành của tôi là Windows 7 và tôi đang chạy máy chủ xampp.


Nhận ra điều này đã được hỏi vào năm 2015 nhưng trong trường hợp những người khác vẫn nhìn vào bài đăng này, bạn không nên nhận magento từ git. Bạn chỉ làm điều này nếu bạn đang gửi một yêu cầu kéo. Magento nên được tải xuống từ phần tải xuống của trang web hoặc được cài đặt thông qua nhà soạn nhạc.
Đaminh Xigen

Câu trả lời:


86

Khi không ở chế độ sản xuất, Magento 2 sẽ cố gắng tạo liên kết tượng trưng cho một số tài nguyên tĩnh. Bạn có thể thay đổi hành vi đó bằng cách làm như sau.

  1. Mở ra app/etc/di.xmlvà tìm virtualType name="developerMaterialization"phần. Trong phần đó, bạn sẽ tìm thấy một mục name="view_preprocessed"cần được sửa đổi hoặc xóa. Bạn có thể sửa đổi nó bằng cách thay đổi nội dung từ Magento\Framework\App\View\Asset\MaterializationStrategy\SymlinkthànhMagento\Framework\App\View\Asset\MaterializationStrategy\Copy

  2. Xóa các tệp trong pub / static để thoát khỏi mọi liên kết tượng trưng hiện có. Bạn có thể muốn cẩn thận để không xóa các .htaccesstập tin.

Điều này sẽ giải quyết lỗi của bạn với symlink.


2
Chỉ cần xóa thư mục pub / static làm việc cho tôi.
Adam Moss

4
Xóa nội dung pub / static là không đủ trong trường hợp của tôi. Tôi đã phải thay đổi Symlink thành Sao chép như đã đề cập trong câu trả lời ở trên. Để tải skin tốt!
Haijerome

2
Làm việc như người ở...!!!!
Neeraj Garg

2
Điều này không làm việc cho tôi, thậm chí không xóa thư mục / pub / static. Còn ý tưởng nào khác không?
goncalotomas

2
Không làm việc cho tôi :-(
Alaa M. Jaddou

7

Tôi phải đối mặt với vấn đề này và cố gắng tìm ra. Tôi đồng ý với Chris O'Toole. Tôi sẽ thêm bước bổ sung. Bước của tôi là

  1. Mở ứng dụng / etc / di.xml và tìm kiếm Symlink. Kiểm tra nó là trong phần sau.
<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>

Thay thế Symlink bằng Sao chép từ. Tiết kiệm.

  1. Xóa tất cả các thư mục trong pub / static. Không xóa .htaccess và các tệp khác.

  2. Chạy xampp với tư cách quản trị viên. Chạy dòng lệnh với tư cách quản trị viên. Chạy đi grunt exec:<theme name>.

nhập mô tả hình ảnh ở đây

Bạn sẽ thấy nó đang chạy tốt.

Sau đó bạn có thể chạy grunt less:<theme name>

nhập mô tả hình ảnh ở đây

Cuối cùng bạn có thể chạy grunt watch

nhập mô tả hình ảnh ở đây

Khi bạn thực hiện bất kỳ thay đổi nào trong các tệp ít hơn (_theme.less hoặc _extend.less), nó sẽ tự động tạo các tệp css style-l và style-m trong thư mục pub / static.

Tôi đang chạy magento 2.1 trong windows 10.


Thật ra chúng ta không cần bước đầu tiên.
cha

2

Hãy nhớ cập nhật quyền truy cập tệp sau khi Magento tạo các tệp tĩnh mới này. Họ không thuộc sở hữu của dữ liệu www, vì vậy họ sẽ cung cấp 404.


1

Trong trường hợp của tôi, đó không phải là vì tôi app/etc/di.xmlđã Magento\Framework\App\View\Asset\MaterializationStrategy\Symlinkđược @Chrish đề cập. Đó là bởi vì một trong các mô-đun của tôi có lỗi tập lệnh trong .phtmltập tin của tôi . Tôi khuyên bạn nên kiểm tra mã của bạn trong .phtmltập tin. Trong trường hợp của tôi, nó đã được giải quyết bằng cách sửa lỗi trong tập tin script của tôi initialize.phtml.


0

Tôi thấy điều quan trọng là sử dụng quyền chính xác cho apache với mod_php cho các thư mục pub / static và var /. Từ bài viết của 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 '{}' + 

Bạn nên thực hiện điều đó trong thiết bị đầu cuối máy chủ. Điều đó đã sửa cho tôi lỗi 404 cho các tập lệnh và hình ảnh.

ps Nhưng đó là cho Linux.


Bạn cũng có thểchmod -R 777 /path/to/magento2/pub/static /path/to/magento2/var
nick.graziano

0

Tôi nghĩ rằng cách thích hợp để làm điều này là từ dòng lệnh: cd đến thư mục magento của bạn và chạy lệnh sau:

php bin/magento setup:static-content:deploy

Thư mục trống var/cachevà kiểm tra.


0

Chỉ cần xóa tất cả các tập tin dưới pub/static/*. Magento sẽ tự động tạo các tệp tĩnh cho bạn khi bạn tải một trang.


0

Bạn phải chạy Xampp (apache, nginx), v.v. với tư cách Quản trị viên để cho phép nó tạo Symlinks trong Windows (đã thử nghiệm với Windows 10).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.