【问题标题】:Forced to execute assetic dump on development mode in Symfony2 with virtual hosts强制在 Symfony2 中使用虚拟主机在开发模式下执行资产转储
【发布时间】:2016-02-06 03:40:05
【问题描述】:

我正在尝试找到解决问题的方法,但没有找到任何解决方案。我会尽量解释清楚。

我正在本地环境中的 MAMP 服务器上开发我的网站。主页 URL 是 http://localhost:8888/mysite/web/app_dev.php。我想将其更改为http://site.dev 用于开发模式(稍后,我将使用http://site.prod 用于生产模式)。你们中的一些人会问我“为什么?”。答案是我们希望(其他开发人员和我)拥有与我的生产中相同类型的 URL,例如 http://example.com

所以,我查看了 Apache 的虚拟主机和我计算机上的主机文件。我将 Apache 端口更改为 80,将 MySQL 端口更改为 3306(Nginx 默认也是 80)。

这是httpd-vhosts.conf 文件:

NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot /Applications/MAMP/htdocs
    ServerName localhost
</VirtualHost>

<VirtualHost *:80>
    ServerName site.dev
    ServerAlias www.site.dev

    DocumentRoot /Applications/MAMP/htdocs/site/web
    <Directory /Applications/MAMP/htdocs/site/web>
        AllowOverride All
        Order Allow,Deny
        Allow from All
    </Directory>
</VirtualHost>

hosts 文件:

127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0     localhost

127.0.0.1       site.dev

显然,我在我的 apache httpd.conf 文件中激活了虚拟主机:

# Virtual hosts
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

这是我的新web/.htaccess 文件:

DirectoryIndex app_dev.php

<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]

    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]

    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app_dev\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .? - [L]

    RewriteRule .? %{ENV:BASE}/app_dev.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        RedirectMatch 302 ^/$ /app_dev.php/
    </IfModule>
</IfModule>

现在,我继续 http://site.dev,一切正常。 我在我的script.js 文件中进行了更改(例如),然后我刷新了我的主页。没有任何改变...我尝试执行php app/console assetic:dump,我再刷新一次,奇迹,一切正常。

所以,我的问题是:如何使用我的http://site.dev 虚拟主机而不需要执行assetic:dump 控制台功能。

谢谢

编辑:我没有找到解决问题的方法,所以,我会给你更多细节: - 当我继续http://localhost/site/ 时,我看到了根目录的所有目录和文件。 - 当我继续http://localhost/site/web/ 时,所有网站都会显示,但缺少图像(树枝或更少文件中的路径错误),我必须执行assetic:dump。 - 当我继续http://localhost/site/web/app_dev.php 时,一切都会立即刷新...

【问题讨论】:

    标签: php apache .htaccess symfony virtualhost


    【解决方案1】:
    php app/console assets:install web --symlink
    

    这应该对您的资产进行符号链接,因此您无需每次都重新运行资产命令。

    另外,请查看http://symfony.com/blog/new-in-symfony-2-6-smarter-assets-install-command

    【讨论】:

    • 显然已经完成了百万次.. 感谢您的编辑,我会看看
    • 所以你是说,符号链接在你的系统上不起作用?编辑:您的资产在哪里?
    • 没有site.dev URL,它们也能完美运行...我的资产位置:web/
    • 你的 symfony 分析器显示你实际上是在你的开发环境中? (你 100% 确定你实际上是在查看 app_dev.php,而不是 app.php)
    • 是的,我有调试工具栏,它向我显示:dev。编辑:顺便说一句,所有其他开发人员,即使在 WAMP 环境中,也有同样的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    相关资源
    最近更新 更多