我在用着:
- CentOS 7
- Apache 2.4
- php56-php-fpm
- php72-php-fpm
在我的开发服务器上。我设法得到它,以便我可以指定一个处理程序,它会将该虚拟主机放在正确的 PHP 版本上,但是 CSS 和 JS 似乎出了问题。
我收到此错误:
尽管 scriptname.js 的 MIME 类型(“text/html”)不是有效的 JavaScript MIME 类型,但仍会加载它
最终会导致致命错误。通过 Google 搜索,我找到了各种帖子,我首先将以下内容添加到我的httpd.conf
文件中:
AddType text/css .css
AddType text/javascript .js
但那没有用。
然后我将其添加到我的 .htaccess,但仍然没有成功。
然后我发现一些建议这样写的东西:
AddType 'text/css; charset=UTF-8' .css
这确实修复了大部分 CSS - 但不是.js
。
我怎样才能让一切按预期进行?
(注意:让我知道要添加哪些文件内容,我将相应地编辑问题)
编辑:
我已将错误信息归结为:
源 /path/to/file.js 加载失败
通过将其添加到我的 vhost 文件:
<Files *.js
Header set Content-type "text/javascript"
</Files>
似乎该文件显示:
拒绝访问
文件权限如下:
drwxr-xr-x 2 dev-admin dev-admin 42 Apr 4 11:37 ./
drwxr-xr-x 4 dev-admin dev-admin 27 Mar 12 17:21 ../
-rw-r--r-- 1 dev-admin dev-admin 86927 Mar 1 15:14 jquery.min.js
-rw-r--r-- 1 dev-admin dev-admin 5094 Apr 4 11:37 main.js
文件标题:
完整虚拟主机:
<VirtualHost *:80>
ServerName site1.development
DocumentRoot /var/www/dev/site1
<Directory /var/www/dev/site1>
# removing this shows the MIME type errors from before
<Files *.css>
Header set Content-type "text/css"
</Files>
# removing this shows the MIME type errors from before
<Files *.js>
Header set Content-type "text/javascript"
</Files>
SetHandler "proxy:fcgi://127.0.0.1:9072"
AllowOverride all
Options Indexes FollowSymLinks
</Directory>
</VirtualHost>
答案1
我觉得我明白问题所在了。你SetHandler
正在应用虚拟主机中所有可能的 URL,而不考虑它是否是 PHP 文件。因此所有内容都会传递给 PHP,即使它是一个静态文件。而且由于 PHP 将静态文件解释为 PHP,因此你会得到你想要的结果。
您应该只向处理程序发送对 PHP 文件的请求,通过文件名选择它们:
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9072"
</FilesMatch>
然后,您可以删除<Files>
所添加的不必要的冗余位。
答案2
403 错误通常来自权限错误。它可能发生在目录或文件级别。
就您而言,从我所看到的情况(仅文件和 apache doc 根目录权限)来看,权限似乎没问题。
您能与我们分享父目录的权限吗?(可能是 /var/www/dev/ 的权限太严格)
如果权限不允许“其他”,0755 应该这样做......
chmod 0755 /var/www/dev
此外,/var/www/dev 应该属于“dev-admin”。如果不是这样,我建议更改它的所有权:
chown dev-admin: /var/www/dev
@Michael Hampton 是对的。您无需进行任何更改(在默认的 CentOS 7 Apache 配置上)。
哦!只是为了确保我们涵盖了所有基础... dev-admin 是 Apache 用户吗?
如果没有,您可以在主 Apache 配置中更改它,或者通过使用适当的用户更改 dev 目录(递归)。