脚本和CSS的Magento 2404错误


39

我已经从https://github.com/magento/magento2下载并安装了Magento 2

但我在位于http:// localhost / magento2 / pub / static /的脚本和cs遇到404错误

我已经检查过,Apache重写引擎已打开。但是,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应该从站点的下载部分下载或通过作曲家安装。
Dominic Xigen

Answers:


86

当不在生产模式下时,Magento 2将尝试为某些静态资源创建符号链接。您可以通过执行以下操作来更改该行为。

  1. 打开app/etc/di.xml并找到该virtualType name="developerMaterialization"部分。在该部分中,您将找到name="view_preprocessed"需要修改或删除的项目。您可以通过将内容从更改Magento\Framework\App\View\Asset\MaterializationStrategy\SymlinkMagento\Framework\App\View\Asset\MaterializationStrategy\Copy

  2. 删除pub / static下的文件以摆脱任何现有的符号链接。您可能要注意不要删除该.htaccess文件。

这应该可以通过symlink解决您的错误。


2
只是删除pub / static文件夹对我有用。
亚当·莫斯

4
就我而言,仅删除发布/静态内容是不够的。我不得不将Symlink更改为Copy,如上面的答案中所述。
Haijerome 2015年

2
像魅力一样运作... !!!!
Neeraj Garg 2015年

2
这对我不起作用,甚至没有删除/ pub / static文件夹。还有其他想法吗?
goncalotomas

2
不为我工作:-(
Alaa M. Jaddou

7

我遇到了这个问题,并试图找出答案。我同意克里斯·奥图尔。我将添加额外的步骤。我的步骤是

  1. 打开app / etc / di.xml并搜索符号链接。检查是否在以下部分中。
<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替换为Copy word。保存。

  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使用正确的Apache许可很重要。摘自《艾伦·斯托姆(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但这是针对Linux的。


您也可以chmod -R 777 /path/to/magento2/pub/static /path/to/magento2/var
nick.graziano

0

我认为执行此操作的正确方法是从命令行:cd到您的magento目录,然后运行以下命令:

php bin/magento setup:static-content:deploy

var/cache目录并检查。


0

刚刚删除了下的所有文件pub/static/*。当您加载页面时,Magento将自动为您生成静态文件。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.