Magento 2的本地安装不会在pub / static文件夹中生成文件


15

我刚刚通过MAMP在本地安装了带有示例数据的Magento 2社区版(从他们的网站下载而未与composer一起安装)。安装过程成功完成,但是pub / static文件夹中的所有文件都丢失了,除了.htaccess。这意味着所有css,js等都为前端和后端返回404。

我花了几个小时试图解决这个问题。到目前为止,这是我所做的:

  • Options Indexes FollowSymLinks AllowOverride在/MAMP/conf/apache/httpd.conf中从“无” 更改为“全部”,然后重新启动MAMP
  • 确保LoadModule rewrite_module modules/mod_rewrite.so在httpd.conf中未添加注释
  • 在MAMP中设置开发域(magento.dev)
  • 尝试php bin/magento setup:static-content:deploy使用Terminal在magento.dev根目录中运行。但是,这返回:

致命错误:在第64行的/Applications/MAMP/htdocs/magento.dev/vendor/magento/framework/Locale/Bundle/DataBundle.php中找不到类“语言环境”

  • RewriteBase /在magento.dev根目录的.htaccess文件中取消注释,并将RewriteBase更改为。
  • 将Magento设置为开发模式
  • 手动清除缓存并php bin/magento setup:static-content:deploy再次运行

大多数指南和论坛帖子都告诉我要运行:php bin/magento setup:static-content:deploy但是我不确定我是否做对了。

作业系统:OSX 10.11.2

MAMP版本:3.5

PHP版本:7.0

Apache版本:2.4.16

MySQL版本:5.6.25

任何帮助,将不胜感激。


我在安装在CentOS服务器上的2.2.2上。此页面上没有任何内容。要进行任何样式设置,我必须运行php bin/magento setup:static-content:deploy -f 并等待80秒。
克里斯·K

Answers:


15

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

我希望您从下载Magento 2 zip magentocommerce.com/download,在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

我亲自在本地主机上使用MAMP,EasyPHP DevServer,Xampp和Wampp进行了尝试,并成功安装并使用了Magento2。有关更多信息,您可以查看以下链接: Magento 2 CSS和JavaScript无法从正确的文件夹加载

解决方案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 ”。

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

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

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

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


答案已被编辑。
Fayyaz Khattak

太好了!我尝试了解决方案1,它对我有用。.感谢Khatak sb
Muhammad Azeem

欢迎@MuhammadAzeem
Khattak

@RajaKhoury不客气!
Fayyaz Khattak

解决方案1对我有用!非常感谢你!
丹尼尔·席尔瓦

5

尝试在命令下方运行

php bin/magento setup:static-content:deploy

并且如果在运行此命令时出现任何错误(例如您已经说过的文件丢失),则将项目文件结构与新文件进行比较 magento2文件结构进行比较。如果项目中缺少任何文件,则将适当的文件复制到项目中。

如果还有其他错误,请在您的问题中发布错误,以便其他人可以回答您的问题。


感谢您的快速回复。我会去做的。究竟在哪里以及如何运行此命令?
Skovsgaard '16

@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 64php bin/magento setup:static-content:deploy根目录中运行后。
Skovsgaard '16

我并没有真正的帮助。抱歉。
Skovsgaard '16

2

看起来intl扩展名未在您的php控制台版本中加载。请确认您对apache和cli版本使用了相同的版本/设置。

MacOsX已经预装了php版本,某些安装php的软件包不会更改终端会话的符号链接。结果,您可以同时安装不同版本的php。

PS:我建议在Mac OS上使用无业游民。如果使用nfs进行文件共享,则效果很好


啊哈!预装的php(cli)仅为5.5.30。预安装的Apache是​​2.4.16(如果MAMP也单独安装Apache,我不知道如何检查MAMP的apache版本)。因此,我必须将预安装的版本更新为7,并还要安装intl扩展名(cli或mamp?)?对于像我这样的菜鸟来说,无业游民似乎太先进了。
Skovsgaard'1

我无法回答Mac特有的问题,但是至少有两种方法可以检查您的PHP版本:(php -v显示PHP命令运行的版本)和使用phpinfo.php,显示Web服务器运行的PHP版本。
史蒂夫·约翰逊

好的,因此MAMP运行PHP 7和Apache 2.2.29。我的本地计算机运行PHP 5.5.30和Apache 2.4.16。那么下一步是将本地计算机的PHP更新为7?
Skovsgaard '16

请尝试使用完整路径到php7二进制文件
KAndy '16

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从您的根文件夹。

检查pub / static。

我希望这能帮到您。


我在哪里以及如何跑步clear page_cache, di ,view_process, cache?它是本地安装,所以作为我计算机的超级管理员,我拥有所有读/写权限。还有我不知道的其他权限吗?
Skovsgaard'1

如果您使用本地而不是完全授予root文件夹权限
denish vachhani

所有文件夹都在var /中清除所有文件夹并赋予该文件夹完全权限。
denish vachhani

1

您是否已在magento2目录中安装composer并运行composer init?如果没有,请尝试然后运行命令php bin/magento setup:static-content:deploy


是的,Composer已安装在我的机器上,但是我没有使用它来安装Magento2。我只是从他们的网站下载.zip,解压缩并安装了。如果我运行composer initcomposer要求我设置composer.json配置,那么我想那将无济于事。
Skovsgaard '16
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.