Magento 2 CSS和JavaScript无法从正确的文件夹加载


35

我希望这里的某人可以提供帮助。我试图在Windows 7机器上的WAMP上安装并运行Magento 2,但收效甚微。

在经历了无数种麻烦的事情之后,我现在面临404响应,并且没有样式或JavaScript加载。

规格如下:

  • Magento-CE-2.0.0 +样品
  • 阿帕奇2.4.9
  • PHP 5.5.12
  • MySQL 5.6.17

当我在浏览器控制台中查看错误时,试图访问不在pub / static文件夹中的文件。确实加载了“ frontend”文件夹,并且存在大多数文件。但是我注意到一些CSS文件不存在。

在运行PHP deploy命令时

php bin/magento setup:static-content:deploy

在其他帖子中提到的我得到以下错误。我不确定该如何解决?

致命错误:第45行的C:\ wamp \ www \ magento \ vendor \ oyejorge \ less.php \ lib \ Less \ Visitor.php中的134217728字节已用尽内存大小(尝试分配64字节)

任何帮助将不胜感激。

更新

我提高了PHP的内存配额,然后再次运行了php deploy脚本。这次,它没有错误,并已完全执行。但是,仍然存在与上述相同的问题。该网站已加载,但每次尝试加载任何页面或资产的尝试都会导致未应用样式的404页面找不到错误。

请在下方查看Chrome检查器中的错误

在此处输入图片说明


@TejabhagavanKollepara这个问题首先被提出,它的格式正确,答案很好,所以IMO另一个问题是一个候选候选人,不是这个问题...顺便说一句,如果另一个问题的重复标志被拒绝了,则不必将此问题标记为其他问题的重复项即可尝试实现相同的目的。
7ochem '16

也请参见SA的答案–全新的Magento安装处于“默认”(而非“生产”)模式,不需要部署静态内容,在所有其他答案中都要求您这样做。
贾尼斯·埃默里斯(JānisElmeris)'18

Answers:


50

解决方案1(如果您要编辑XML文件)

我希望您从magentocommerce.com/download示例数据中下载Magento 2 zip ,在phpmyadmin中创建新的数据库,在htdocs文件夹中提取zip 。安装Magento 2,但不要使用localhost在商店URL和管理URL中使用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

解决方案2

安装Composer。现在,我希望您从下载Magento 2 zip magentocommerce.com/download,在phpmyadmin中创建新的数据库,在htdocs文件夹中提取zip 。安装Magento 2,但不要使用localhost在商店URL和管理URL中使用127.0.0.1。成功安装后,请勿运行magento。

现在,我们将验证Composer的安装,部署静态内容,清除/刷新Magento缓存并为Magento 2块重新编制索引。要执行上述所有操作,请按WINDOWS KEY + R打开“运行”对话框,然后键入“ cmd”以打开命令提示符。

输入“ cd PATH_TO_YOUR_MAGENTO2_FILES ”以进入Magento 2 ROOT目录。

现在,要在以上目录中验证Composer安装,请键入“ composer install ”。

如果在此步骤中遇到任何错误,请检查您的Composer安装

在此步骤中,我们将设置静态内容以部署在我们的Magento商店中。要执行此操作,请键入“ php bin / magento setup:static-content:deploy ”。

对于那些使用Magento 2.2.x的用户

php bin/magento setup:static-content:deploy -f

如果遇到任何错误,请检查您的PHP.EXE和PHP.INI环境变量

通过在CMD中键入“ php bin / magento cache:flush ” 来清除/刷新Magento缓存。

最后,要重新索引 Magento静态块,请输入“ php bin / magento indexer:reindex ”。

成功安装Magento 2,您已完成。


4
此外,在php.ini中变化的max_execution_time 500,memory_limit的到2048M,post_max_size要到2048M,的upload_max_filesize到2048M和max_file_uploads到2048
Fayyaz卡塔克

感谢你的快速回复。我进行了这些更改,但没有效果。进行更改后,我重新启动了WAMP服务器。我已经编辑了问题以显示我可以在Chrome检查器中看到的错误
-E.Gain

哦,对不起,我要提一两件事,首先删除所有缓存和会话,在化妆的变化di.xml还删除一切从ROOT>酒馆>静态>删除所有EXCEPT的.htaccess
Fayyaz卡塔克

1
@MagenX这是每个人的观点,他更喜欢使用哪种工具。在您眼中,您批评一切都是锤子,而不是分享解决方案的观点。
Fayyaz Khattak

1
解决方案#2发挥了作用,感谢您为我节省了数天(即使不是几天)的时间,以解决这个问题!
乔纳森·马祖罗

11

您只需要更新apache2.conf文件。

在Ubuntu 16.04上

  1. 打开并编辑文件 /etc/apache2/apache2.conf
  2. 导航到apache2.conf文件中的位置 <Directory /var/www/>
  3. 更改 "AllowOverride None""AllowOverride All"
  4. 保存文件
  5. 重新开始 apache2 -> sudo service apache2 restart

很难找到这个答案!即使在全新的Magento安装处于“默认”(而非“生产”)模式并且不需要部署静态内容的情况下,其他地方,人们还是建议(重新)部署静态内容。
贾尼斯·埃默里斯(JānisElmeris)

10

如果在magento2中安装后遇到CSS和js页面加载设计的问题

请按照以下步骤操作:

打开终端并导航到magento Web根目录

 $ cd / var / www / html / magento2 

步骤1。

 $ php bin / magento设置:静态内容:部署

第2步。

$ php bin / magento索引器:重新索引

第三步

确保启用了Apache“ rewrite_module”,然后重新启动服务器

第四步。

$ chown -R www-data:www-data / var / www / html / magento2 

步骤五

 $ chmod -R 777 / var / www / html / magento2 

第六步

删除var / cache下的缓存文件夹

以上步骤正常工作。我希望这也对您有用。

让我知道是否有任何问题。:)

http://gotechnies.com/css-javascript-files-loading-magento-2-installation/


1
如何在Windows中运行这些命令?
哈桑·

1
它对我来说仅适用于前三个步骤。:)
hln

6
将服务器上所有文件的权限设置为777不太聪明。
克里斯·古德

1
您对整个magento安装具有完全读写权限的步骤并没有给我留下深刻的印象。
Cyclonecode '18

1
将权限设置为777是不好的建议,但希望任何系统管理员都能更好地了解。
John Hall

6

对我而言,这仅仅是因为未启用mod_rewrite。

sudo a2enmod rewrite

service apache2 restart


1
完美的解决方案!+1 :)
SagarPPanchal

6

我通过添加解决了相同的问题

sudo nano /etc/apache2/apache2.conf

修改这个

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

对此

<Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

您还应该启用mod_rewriteandsall ssl证书apache2模块:

sudo a2enmod ssl

sudo a2ensite default-ssl

sudo a2enmod rewrite

sudo service apache2 restart

1
加上rm -rf var / *对我有用。很棒的好地方。
乔恩·霍兰

6

如果在CSS路径中显示版本名称,这是最简单的解决方案

像:pub / static / version323334 /

然后在mysql中运行此查询

INSERT INTO core_config_data (path, value) VALUES ('dev/static/sign', 0)
ON DUPLICATE KEY UPDATE value = 0;

之后清除配置缓存

 bin/magento cache:clean config

您还可以从管理员禁用静态文件版本

在此处输入图片说明


4
这对我有用,谢谢。但是,查询必须是固定的INSERT INTO core_config_data(path,value)VALUES('dev / static / sign',0);
阿夫塔布·纳韦德

什么是路径和价值
zus

路径,值是字段名称,我已经定义了值(dev / static / sign,0),只需运行此sql,它应该可以正常工作
Surendra Kumar Ahir

完美的解决方案!令我
高兴

5
  1. 如果您之前未禁用缓存,请尝试禁用它
  2. 确保您拥有带有干净代码的最新版本的Magento。如果您修改或自定义某些内容,请确保修复所有错误。
  3. 在下面运行一些命令可能会对您有所帮助。

    php bin/magento indexer:reindex

    php bin/magento cache:flush

删除文件夹

  • pub/static/frontend/*
  • var/cache
  • var/view_preprocessed/*

  • php bin/magento setup:static-content:deploy


3

就我而言,我不小心.htaccessROOT/pub/ROOT/pub/static文件夹中删除了文件。然后,当我还原它时,它开始工作。


2

解决了 !!!

在您的Magento2根文件夹的CLI界面中运行以下命令:

php bin/magento setup:static-content:deploy

php bin/magento indexer:reindex

然后通过此命令在magento2的根目录下删除var文件夹。

rm -rf var/*

然后刷新您的主页和管理面板。它的工作!酷!


1

我对404也有同样的问题。我通过确保Apache中的VirtualHost指令正确来解决了该问题。这是我的VirtualHost:

<VirtualHost *:80>
    DocumentRoot /var/www/magento2
    ServerName magento-ce-2.1.6
    <Directory "/var/www/magento2">
        Options Indexes FollowSymLinks
        AllowOverride All
    </Directory>
</VirtualHost>

而且您还可以告诉我们,以前出了什么问题吗?否则,此示例对其他人不会有太大帮助。
Fabian Schmengler '17


0

我遇到了与OP完全相同的问题,这仅仅是因为我将语言环境设置为en_AU,所以使用默认的deploy命令只能生成en_US内容。您必须将实际使用的语言环境添加到命令的EN中,如下所示:

php bin/magento setup:static-content:deploy en_US en_AU

0

我尝试了上述解决方案。但这并没有帮助我。尽管如此,我还是使用了与序列更改相同的命令。他们是,

  1. var目录清除缓存,composer_home,生成,日志,page_cache,tmp和view_preprocessed

  2. 一一运行以下命令。

php bin / magento索引器:reindex

php bin / magento缓存:刷新

php bin / magento设置:静态内容:部署

我希望这可以对像我这样的人有所帮助。


0

禁用mod_pagespeed

Pagespeed使用缩写(即,如果这是普通文件)来处理内容的“缓存”实例。

image.css

设置如下。

image.pagespeed.css

上面是一个非常简单的示例,但是您已经可以看到潜在问题在哪里。由于无法通过核心路径找到静态内容,因此可能导致不正确的静态内容加载,原因是这些内容是暂时的。这是Mod_Pagespeed的继承问题,因此,我们建议禁用它。

快速彗星支持的答案,它解决了我的问题


0

对于Ubuntu 18.04(Bionic)。我已使用以下步骤使静态文件正确加载。

安装完成后:

确保未启用apache模块“重写”,然后执行以下操作

  • cd /etc/apache2
  • 运行命令 a2enmod rewrite
  • sudo vi /etc/apache2/apache2.conf

然后进行以下更改

修改自:

<Directory /var/www/>
     Options Indexes FollowSymLinks
     AllowOverride None
     Require all granted
</Directory>

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

然后重新启动Apache

sudo service apache2 restart

要么

sudo /etc/init.d/apache2 restart

然后更改以下权限 <magento root director>

  • chmod -R 774 /var/www/html/<magento root director>

然后部署静态内容

  • php bin/magento setup:static-content:deploy -f (如果您在开发环境中,则需要-f)

然后刷新缓存并重新索引

  • <magento root directory> php bin/magento cache:flush
  • <magento root directory> php bin/magento indexer:reindex

要么

  • <magento root directory> rm -R /var/cache*

然后使用访问您的主页

  • 127.0.0.1/your_configured_url 代替 localhost/your_configured_url

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.