理想主义的末日 發表於 2023-6-24 00:00:00

Ubuntu Apahce2.4下无法访问JS目录的问题解决

<p>
        <span><strong>问题描述</strong></span></p>
<p>
        今天调试一个项目,项目放在webroot下面的javascript目录,无论怎么设置都是403 You don't have permission to access /javascript/ on this server.</p>
<p>
        <span><strong>思考过程</strong></span></p>
<p>
        首先第一反应,Google了错误<code>You don't have permission to access /javascript/ on this server. </code>,然后发现大部分答案都说到了配置文件中的Directory设置。比如</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_763860">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">&lt;Directory /&gt;</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="plain spaces"> </code><code class="plain plain">Options FollowSymLinks</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="plain spaces"> </code><code class="plain plain">AllowOverride All</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="plain spaces"> </code><code class="plain plain">Order deny,allow</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="plain spaces"> </code><code class="plain plain">Allow from all</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="plain plain">&lt;/Directory&gt;</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        而我并不是整个webroot都不能访问,其他所有的文件夹都可以访问,就是目录javascript文件夹没有权限访问,我的设置是</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_443438">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">&lt;Directory /home/hfx/workspace/&gt;</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="plain spaces">  </code><code class="plain plain">Options Indexes FollowSymLinks</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="plain plain">#  AllowOverride None</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="plain spaces">  </code><code class="plain plain">AllowOverride All</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="plain spaces">  </code><code class="plain plain">Require all granted</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="plain plain">&lt;/Directory&gt;</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        所以按理来说也是没有问题的,可以单单就是javascript目录无法访问,并且我尝试重新给javascript目录设置权限</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_369766">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash functions">chmod</code> <code class="bash plain">777 -R javascript</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        然而还是并没有什么卵用,于是我尝试更改javascript变成javaScript或者新建其他的名字的文件夹,而它们均可以正常访问,所以猜想症结应该是那里的配置禁止了web根路径下名字为javascript的路径。</p>
<p>
        <span><strong>发现问题</strong></span></p>
<p>
        于是我看apache的所有配置文件,打开/etc/apache2/conf-enable/目录,发现了一个名为javascript-common.conf的配置文件,打开一看</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_271732">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">Alias </code><code class="bash plain">/javascript</code> <code class="bash plain">/usr/share/javascript/</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">&lt;Directory </code><code class="bash string">"/usr/share/javascript/"</code><code class="bash plain">&gt;</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash spaces">  </code><code class="bash plain">Options FollowSymLinks MultiViews</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash plain">&lt;</code><code class="bash plain">/Directory</code><code class="bash plain">&gt;</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        其实我并不知道具体是什么意思,可是从字面意思大概看出,配置里面指定了一个别名/javascript到目录/usr/share/javascript/,应该访问/javascript就变成了访问目录/usr/share/javascript/而不是我们在web根目录下创建的javascript目录。</p>
<p>
        <span><strong>解决方案</strong></span></p>
<p>
        于是google一下javascript-common.conf,这才发现了很多真正与此相关的问题,所以真正的解决方案有很多种,有的直接修改别名的名称为/javascript-common,而我觉得最好的解决方案应该是</p>
<p>
        You don't need to edit the conf file or purge the package just disable it.</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_481599">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">a2disconf javascript-common</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">service apache2 reload</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        If for some reason you want to use that conf:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_238072">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">a2enconf javascript-common</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">service apache2 reload</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        另外解释一下a2disconf和a2enconf的作用,官方的介绍是</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_108004">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">a2enconf, a2disconf - enable or disable an apache2 configuration file</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        从介绍就直接明了它的作用了。快捷的启用或者禁用一个apache模块。</p>
<p>
        <strong>另外还有类似的几个命令:</strong></p>
<ul>
<li>
                apache2ctl - Apache HTTP server control interface</li>
        <li>
                a2enmod, a2dismod - enable or disable an apache2 module</li>
</ul>
<p>
        <span><strong>总结</strong></span></p>
<p>
        以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。</p>
<p>
        原文链接:http://www.hfxblog.com/2016/08/16/Ubuntu-Apahce2-4无法访问javascript目录的问题/</p>
頁: [1]
查看完整版本: Ubuntu Apahce2.4下无法访问JS目录的问题解决