Yii2-Aliases の詳細な学習

Jun 13, 2016 pm 12:26 PM
alias email path protected

Yii2的深入学习--别名(Aliases)

在之前自动加载机制的文章中,我们有提到别名,提到 getAlias 方法,大家当时可能不太清楚,这到底是什么,今天我们就来说一下别名。

别名用来表示文件路径和 URL,这样就避免了将一些文件路径、URL以硬编码的方式写入代码中,或者多处出现一长串的文件路径、URL。

在 Yii2 中,一个别名必须以 @ 字符开头,Yii2 预定义了大量可用的别名,预定义的别名如下:

  • @yii 表示Yii框架所在的目录,也是 BaseYii.php 文件所在的位置
  • @app 表示正在运行的应用的根目录
  • @vendor 表示Composer 第三方库所在目录,一般是 @app/vendor 或 @app/../vendor
  • @bower 表示 Bower 第三方库所在目录,一般是 @vendor/bower
  • @npm 表示 NPM 第三方库所在目录,一般是 @vendor/npm
  • @runtime 表示正在运行的应用的运行时用于存放运行时文件的目录,一般是 @app/runtime
  • @webroot 表示正在运行的应用的入口文件 index.php 所在的目录,一般是 @app/web
  • @web URL别名,表示当前应用的根URL,主要用于前端
  • @common 表示通用文件夹
  • @frontend 表示前台应用所在的文件夹
  • @backend 表示后台应用所在的文件夹
  • @console 表示命令行应用所在的文件夹
  • 其他使用Composer安装的Yii扩展注册的二级别名

其中的 @common @frontend @backend 和 @console 在 baisc 的项目中是不会存在的。在 advanced 的项目中通常是定义在 common\config\bootstrap.php 文件中,其内容如下:

<?<span style="color: #000000;">phpYii</span>::setAlias('common', <span style="color: #008080;">dirname</span><span style="color: #000000;">(__DIR__));Yii</span>::setAlias('frontend', <span style="color: #008080;">dirname</span>(<span style="color: #008080;">dirname</span>(__DIR__)) . '/frontend'<span style="color: #000000;">);Yii</span>::setAlias('backend', <span style="color: #008080;">dirname</span>(<span style="color: #008080;">dirname</span>(__DIR__)) . '/backend'<span style="color: #000000;">);Yii</span>::setAlias('console', <span style="color: #008080;">dirname</span>(<span style="color: #008080;">dirname</span>(__DIR__)) . '/console');
ログイン後にコピー

Yii2 中关于别名的设置和获取的方法都放在 BaseYii 类中,其结构基本如下:

<?<span style="color: #000000;">php</span><span style="color: #0000ff;">class</span><span style="color: #000000;"> BaseYii{    </span><span style="color: #008000;">/*</span><span style="color: #008000;">*     * @var array registered path aliases     * @see getAlias()     * @see setAlias()     * Yii 的路径别名的 Map, 默认 @yii 指向当前目录     </span><span style="color: #008000;">*/</span>    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #800080;">$aliases</span> = [[email&#160;protected]' =><span style="color: #000000;"> __DIR__];    </span><span style="color: #008000;">/*</span><span style="color: #008000;">*     * Translates a path alias into an actual path.     * 将别名转化为真实的路径     </span><span style="color: #008000;">*/</span>    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> getAlias(<span style="color: #800080;">$alias</span>, <span style="color: #800080;">$throwException</span> = <span style="color: #0000ff;">true</span><span style="color: #000000;">)    {        </span>...<span style="color: #000000;">    }    </span><span style="color: #008000;">/*</span><span style="color: #008000;">*     * Registers a path alias.     * 用一个真实的路径注册一个别名     </span><span style="color: #008000;">*/</span>    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> setAlias(<span style="color: #800080;">$alias</span>, <span style="color: #800080;">$path</span><span style="color: #000000;">)    {        </span>...<span style="color: #000000;">    }}</span>
ログイン後にコピー

这是简化之后的 BaseYii 类的结构,其中有一个重要的变量 $aliases,两个重要的方法 getAlias 和 setAlias。$aliases 是存储 Yii2 路径别名的一个数组,key 是别名,value 是真实路径。getAlias 方法是根据别名获取到真实的地址,setAlias 是用一个真实的地址去注册一个别名。

先来看下 setAlias 方法,其内容如下:

    <span style="color: #008000;">/*</span><span style="color: #008000;">*     * Registers a path alias.     *     * 用一个真实的路径注册一个别名     *     * A path alias is a short name representing a long path (a file path, a URL, etc.)     * For example, we use [email protected]' as the alias of the path to the Yii framework directory.     *     * A path alias must start with the character '@' so that it can be easily differentiated     * from non-alias paths.     *     * Note that this method does not check if the given path exists or not. All it does is     * to associate the alias with the path.     *     * Any trailing '/' and '\' characters in the given path will be trimmed.     *     * @param string $alias the alias name (e.g. "@yii"). It must start with a '@' character.     * It may contain the forward slash '/' which serves as boundary character when performing     * alias translation by [[getAlias()]].     * @param string $path the path corresponding to the alias. If this is null, the alias will     * be removed. Trailing '/' and '\' characters will be trimmed. This can be     *     * - a directory or a file path (e.g. `/tmp`, `/tmp/main.txt`)     * - a URL (e.g. `http://www.yiiframework.com`)     * - a path alias (e.g. [email protected]/base`). In this case, the path alias will be converted into the     *   actual path first by calling [[getAlias()]].     *     * @throws InvalidParamException if $path is an invalid alias.     * @see getAlias()     </span><span style="color: #008000;">*/</span>    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> setAlias(<span style="color: #800080;">$alias</span>, <span style="color: #800080;">$path</span><span style="color: #000000;">)    {        </span><span style="color: #0000ff;">if</span> (<span style="color: #008080;">strncmp</span>(<span style="color: #800080;">$alias</span>, '@', 1<span style="color: #000000;">)) {            </span><span style="color: #008000;">//</span><span style="color: #008000;"> 如果不是以 @ 开头,就将 @ 拼到开头</span>            <span style="color: #800080;">$alias</span> = '@' . <span style="color: #800080;">$alias</span><span style="color: #000000;">;        }        </span><span style="color: #008000;">//</span><span style="color: #008000;"> 获取 / 在 $alias 中首次出现的位置</span>        <span style="color: #800080;">$pos</span> = <span style="color: #008080;">strpos</span>(<span style="color: #800080;">$alias</span>, '/'<span style="color: #000000;">);        </span><span style="color: #008000;">//</span><span style="color: #008000;"> 如果 / 不存在,$root 就是整个 $alias,否则就是 $alias 中 / 前的内容</span>        <span style="color: #800080;">$root</span> = <span style="color: #800080;">$pos</span> === <span style="color: #0000ff;">false</span> ? <span style="color: #800080;">$alias</span> : <span style="color: #008080;">substr</span>(<span style="color: #800080;">$alias</span>, 0, <span style="color: #800080;">$pos</span><span style="color: #000000;">);        </span><span style="color: #0000ff;">if</span> (<span style="color: #800080;">$path</span> !== <span style="color: #0000ff;">null</span><span style="color: #000000;">) {            </span><span style="color: #008000;">//</span><span style="color: #008000;"> 如果 $path 以 @ 开头,使用 getAlias 去获取路径,否则,就去除掉最右边的 /</span>            <span style="color: #800080;">$path</span> = <span style="color: #008080;">strncmp</span>(<span style="color: #800080;">$path</span>, '@', 1) ? <span style="color: #008080;">rtrim</span>(<span style="color: #800080;">$path</span>, '\\/') : <span style="color: #0000ff;">static</span>::getAlias(<span style="color: #800080;">$path</span><span style="color: #000000;">);            </span><span style="color: #0000ff;">if</span> (!<span style="color: #0000ff;">isset</span>(<span style="color: #0000ff;">static</span>::<span style="color: #800080;">$aliases</span>[<span style="color: #800080;">$root</span><span style="color: #000000;">])) {                </span><span style="color: #008000;">//</span><span style="color: #008000;"> 如果不存在这个 $root 的别名</span>                <span style="color: #0000ff;">if</span> (<span style="color: #800080;">$pos</span> === <span style="color: #0000ff;">false</span><span style="color: #000000;">) {                    </span><span style="color: #008000;">//</span><span style="color: #008000;"> 没有 /,就将 $path 直接赋值以为 $root 别名对应的路径</span>                    <span style="color: #0000ff;">static</span>::<span style="color: #800080;">$aliases</span>[<span style="color: #800080;">$root</span>] = <span style="color: #800080;">$path</span><span style="color: #000000;">;                } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> {                    </span><span style="color: #008000;">//</span><span style="color: #008000;"> 否则,就将 $path 直接赋值为 $root 下的 $alias 的路径</span>                    <span style="color: #0000ff;">static</span>::<span style="color: #800080;">$aliases</span>[<span style="color: #800080;">$root</span>] = [<span style="color: #800080;">$alias</span> => <span style="color: #800080;">$path</span><span style="color: #000000;">];                }            } </span><span style="color: #0000ff;">elseif</span> (<span style="color: #008080;">is_string</span>(<span style="color: #0000ff;">static</span>::<span style="color: #800080;">$aliases</span>[<span style="color: #800080;">$root</span><span style="color: #000000;">])) {                </span><span style="color: #008000;">//</span><span style="color: #008000;"> 如果存在,而且是个string类型</span>                <span style="color: #0000ff;">if</span> (<span style="color: #800080;">$pos</span> === <span style="color: #0000ff;">false</span><span style="color: #000000;">) {                    </span><span style="color: #008000;">//</span><span style="color: #008000;"> 没有 /,意味着 $alias 就是 $root,直接覆盖即可</span>                    <span style="color: #0000ff;">static</span>::<span style="color: #800080;">$aliases</span>[<span style="color: #800080;">$root</span>] = <span style="color: #800080;">$path</span><span style="color: #000000;">;                } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> {                    </span><span style="color: #008000;">//</span><span style="color: #008000;"> 否则,就合并到一起</span>                    <span style="color: #0000ff;">static</span>::<span style="color: #800080;">$aliases</span>[<span style="color: #800080;">$root</span>] =<span style="color: #000000;"> [                        </span><span style="color: #800080;">$alias</span> => <span style="color: #800080;">$path</span>,                        <span style="color: #800080;">$root</span> => <span style="color: #0000ff;">static</span>::<span style="color: #800080;">$aliases</span>[<span style="color: #800080;">$root</span>],<span style="color: #000000;">                    ];                }            } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> {                </span><span style="color: #008000;">//</span><span style="color: #008000;"> 这种,正常是个 array 类型                // 直接添加进去即可</span>                <span style="color: #0000ff;">static</span>::<span style="color: #800080;">$aliases</span>[<span style="color: #800080;">$root</span>][<span style="color: #800080;">$alias</span>] = <span style="color: #800080;">$path</span><span style="color: #000000;">;                </span><span style="color: #008000;">//</span><span style="color: #008000;"> krsort — 对数组按照键名逆向排序<br>          // 可以做到优先匹配长的别名</span>                <span style="color: #008080;">krsort</span>(<span style="color: #0000ff;">static</span>::<span style="color: #800080;">$aliases</span>[<span style="color: #800080;">$root</span><span style="color: #000000;">]);            }        } </span><span style="color: #0000ff;">elseif</span> (<span style="color: #0000ff;">isset</span>(<span style="color: #0000ff;">static</span>::<span style="color: #800080;">$aliases</span>[<span style="color: #800080;">$root</span><span style="color: #000000;">])) {            </span><span style="color: #008000;">//</span><span style="color: #008000;"> $path 为空且对应的别名有值存在,就是要移除相应的别名</span>            <span style="color: #0000ff;">if</span> (<span style="color: #008080;">is_array</span>(<span style="color: #0000ff;">static</span>::<span style="color: #800080;">$aliases</span>[<span style="color: #800080;">$root</span><span style="color: #000000;">])) {                </span><span style="color: #008000;">//</span><span style="color: #008000;"> 如果 $root 的别名对应一个 array,就只移除掉对应的别名即可</span>                <span style="color: #0000ff;">unset</span>(<span style="color: #0000ff;">static</span>::<span style="color: #800080;">$aliases</span>[<span style="color: #800080;">$root</span>][<span style="color: #800080;">$alias</span><span style="color: #000000;">]);            } </span><span style="color: #0000ff;">elseif</span> (<span style="color: #800080;">$pos</span> === <span style="color: #0000ff;">false</span><span style="color: #000000;">) {                </span><span style="color: #008000;">//</span><span style="color: #008000;"> 如果 $root 的别名对应不是一个 array 而且 $root 就是 $alias,就移除这个 $root 的别名</span>                <span style="color: #0000ff;">unset</span>(<span style="color: #0000ff;">static</span>::<span style="color: #800080;">$aliases</span>[<span style="color: #800080;">$root</span><span style="color: #000000;">]);            }        }    }</span>
ログイン後にコピー

下面举几个例子来说明,别名写入后,$aliases 中的内容变化。

<span style="color: #008000;">//</span><span style="color: #008000;"> 初始 BaseYii::aliases[[email protected]'] = 'path/to/foo'</span>Yii::setAlias([email protected]', 'path/to/foo'<span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;"> 直接覆盖 BaseYii::aliases[[email protected]'] = 'path/to/foo2'</span>Yii::setAlias([email protected]', 'path/to/foo2'<span style="color: #000000;">);</span><span style="color: #008000;">/*</span><span style="color: #008000;">** 新增* BaseYii::aliases[[email protected]'] = [*     [email protected]/bar' => 'path/to/foo/bar',*     [email protected]' => 'path/to/foo2',* ];</span><span style="color: #008000;">*/</span><span style="color: #000000;">Yii</span>::setAlias([email protected]/bar', 'path/to/foo/bar'<span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;"> 初始 BaseYii::aliases[[email protected]'] = [[email protected]/qux' => 'path/to/bar/qux'];</span>Yii::setAlias([email protected]/qux', 'path/to/bar/qux'<span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;"> 直接覆盖 BaseYii::aliases[[email protected]'] = [[email protected]/qux' => 'path/to/bar/qux2'];</span>Yii::setAlias([email protected]/qux', 'path/to/bar/qux2'<span style="color: #000000;">);</span><span style="color: #008000;">/*</span><span style="color: #008000;">** 新增* BaseYii::aliases[[email protected]'] = [*     [email protected]/foo' => 'path/to/bar/foo',*     [email protected]/qux' => 'path/to/bar/qux2',* ];</span><span style="color: #008000;">*/</span><span style="color: #000000;">Yii</span>::setAlias([email protected]/foo', 'path/to/bar/foo'<span style="color: #000000;">);</span><span style="color: #008000;">/*</span><span style="color: #008000;">** 新增* BaseYii::aliases[[email protected]'] = [*     [email protected]/foo' => 'path/to/bar/foo',*     [email protected]/qux' => 'path/to/bar/qux2',*     [email protected]' => 'path/to/bar',* ];</span><span style="color: #008000;">*/</span><span style="color: #000000;">Yii</span>::setAlias([email protected]', 'path/to/bar'<span style="color: #000000;">);</span><span style="color: #008000;">/*</span><span style="color: #008000;">** 删除* BaseYii::aliases[[email protected]'] = [*     [email protected]/foo' => 'path/to/bar/foo',*     [email protected]' => 'path/to/bar',* ];</span><span style="color: #008000;">*/</span><span style="color: #000000;">Yii</span>::setAlias([email protected]/qux', <span style="color: #0000ff;">null</span><span style="color: #000000;">);</span><span style="color: #008000;">/*</span><span style="color: #008000;">** 删除* BaseYii::aliases[[email protected]'] = [*     [email protected]/foo' => 'path/to/bar/foo',* ];</span><span style="color: #008000;">*/</span><span style="color: #000000;">Yii</span>::setAlias([email protected]', <span style="color: #0000ff;">null</span>);
ログイン後にコピー

再来看一下 getAlias 方法,其内容如下:

    <span style="color: #008000;">/*</span><span style="color: #008000;">*     * Translates a path alias into an actual path.     * 将别名转化为真实的路径     *     * The translation is done according to the following procedure:     *     * 1. If the given alias does not start with '@', it is returned back without change;     * 2. Otherwise, look for the longest registered alias that matches the beginning part     *    of the given alias. If it exists, replace the matching part of the given alias with     *    the corresponding registered path.     * 3. Throw an exception or return false, depending on the `$throwException` parameter.     *     * For example, by default [email protected]' is registered as the alias to the Yii framework directory,     * say '/path/to/yii'. The alias [email protected]/web' would then be translated into '/path/to/yii/web'.     *     * If you have registered two aliases [email protected]' and [email protected]/bar'. Then translating [email protected]/bar/config'     * would replace the part [email protected]/bar' (instead of [email protected]') with the corresponding registered path.     * This is because the longest alias takes precedence.     *     * However, if the alias to be translated is [email protected]/barbar/config', then [email protected]' will be replaced     * instead of [email protected]/bar', because '/' serves as the boundary character.     *     * Note, this method does not check if the returned path exists or not.     *     * @param string $alias the alias to be translated.     * @param boolean $throwException whether to throw an exception if the given alias is invalid.     * If this is false and an invalid alias is given, false will be returned by this method.     * @return string|boolean the path corresponding to the alias, false if the root alias is not previously registered.     * @throws InvalidParamException if the alias is invalid while $throwException is true.     * @see setAlias()     </span><span style="color: #008000;">*/</span>    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> getAlias(<span style="color: #800080;">$alias</span>, <span style="color: #800080;">$throwException</span> = <span style="color: #0000ff;">true</span><span style="color: #000000;">)    {        </span><span style="color: #008000;">/*</span><span style="color: #008000;">*         * strncmp — 二进制安全比较字符串开头的若干个字符         * int strncmp ( string $str1 , string $str2 , int $len )         * 如果 $alias 不是以 '@' 开头的,就不是一个 Yii 的别名         </span><span style="color: #008000;">*/</span>        <span style="color: #0000ff;">if</span> (<span style="color: #008080;">strncmp</span>(<span style="color: #800080;">$alias</span>, '@', 1<span style="color: #000000;">)) {            </span><span style="color: #008000;">//</span><span style="color: #008000;"> not an alias</span>            <span style="color: #0000ff;">return</span> <span style="color: #800080;">$alias</span><span style="color: #000000;">;        }        </span><span style="color: #008000;">//</span><span style="color: #008000;"> 获取 / 在 $alias 中首次出现的位置</span>        <span style="color: #800080;">$pos</span> = <span style="color: #008080;">strpos</span>(<span style="color: #800080;">$alias</span>, '/'<span style="color: #000000;">);        </span><span style="color: #008000;">//</span><span style="color: #008000;"> 如果 / 不存在,$root 就是整个 $alias,否则就是 $alias 中 / 前的内容</span>        <span style="color: #800080;">$root</span> = <span style="color: #800080;">$pos</span> === <span style="color: #0000ff;">false</span> ? <span style="color: #800080;">$alias</span> : <span style="color: #008080;">substr</span>(<span style="color: #800080;">$alias</span>, 0, <span style="color: #800080;">$pos</span><span style="color: #000000;">);        </span><span style="color: #008000;">//</span><span style="color: #008000;"> 如果存在 $root 的别名</span>        <span style="color: #0000ff;">if</span> (<span style="color: #0000ff;">isset</span>(<span style="color: #0000ff;">static</span>::<span style="color: #800080;">$aliases</span>[<span style="color: #800080;">$root</span><span style="color: #000000;">])) {            </span><span style="color: #0000ff;">if</span> (<span style="color: #008080;">is_string</span>(<span style="color: #0000ff;">static</span>::<span style="color: #800080;">$aliases</span>[<span style="color: #800080;">$root</span><span style="color: #000000;">])) {                </span><span style="color: #008000;">//</span><span style="color: #008000;"> 如果 $root 对应的别名是一个字符串,之直接返回 $aliases[$root] 或者 $aliases[$root] . substr($alias, $pos)                // 当 $root 就是 $alias 返回 $aliases[$root], 否则就在拼接上 $alias 除去 $root 后,剩下的字符串</span>                <span style="color: #0000ff;">return</span> <span style="color: #800080;">$pos</span> === <span style="color: #0000ff;">false</span> ? <span style="color: #0000ff;">static</span>::<span style="color: #800080;">$aliases</span>[<span style="color: #800080;">$root</span>] : <span style="color: #0000ff;">static</span>::<span style="color: #800080;">$aliases</span>[<span style="color: #800080;">$root</span>] . <span style="color: #008080;">substr</span>(<span style="color: #800080;">$alias</span>, <span style="color: #800080;">$pos</span><span style="color: #000000;">);            } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> {                </span><span style="color: #008000;">//</span><span style="color: #008000;"> 否则,要遍历整个 $aliases[$root] 数组,找到 $name 与 $alias 相同的值,返回 $path . substr($alias, strlen($name))                // 其实是返回了 $path 拼接上 $alias 除去 $root 后,剩下的字符串</span>                <span style="color: #0000ff;">foreach</span> (<span style="color: #0000ff;">static</span>::<span style="color: #800080;">$aliases</span>[<span style="color: #800080;">$root</span>] <span style="color: #0000ff;">as</span> <span style="color: #800080;">$name</span> => <span style="color: #800080;">$path</span><span style="color: #000000;">) {                    </span><span style="color: #0000ff;">if</span> (<span style="color: #008080;">strpos</span>(<span style="color: #800080;">$alias</span> . '/', <span style="color: #800080;">$name</span> . '/') === 0<span style="color: #000000;">) {                        </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">$path</span> . <span style="color: #008080;">substr</span>(<span style="color: #800080;">$alias</span>, <span style="color: #008080;">strlen</span>(<span style="color: #800080;">$name</span><span style="color: #000000;">));                    }                }            }        }        </span><span style="color: #0000ff;">if</span> (<span style="color: #800080;">$throwException</span><span style="color: #000000;">) {            </span><span style="color: #0000ff;">throw</span> <span style="color: #0000ff;">new</span> InvalidParamException("Invalid path alias: <span style="color: #800080;">$alias</span>"<span style="color: #000000;">);        } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> {            </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #000000;">;        }    }</span>
ログイン後にコピー

好了,关于别名就先说这么多~~

 

对 Yii2 源码有兴趣的同学可以关注项目 yii2-2.0.3-annotated,现在在上面已经添加了不少关于 Yii2 源码的注释,之后还会继续添加~

有兴趣的同学也可以参与进来,提交 Yii2 源码的注释。

 

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Nginx 設定における root ディレクティブと alias ディレクティブの違いは何ですか? Nginx 設定における root ディレクティブと alias ディレクティブの違いは何ですか? May 12, 2023 pm 12:16 PM

ルートとエイリアスの両方を location モジュールで定義でき、リクエストされたリソースの実際のパスを指定するために使用されます。たとえば、 location/i/{root/data/w3;} リクエスト http://foofish.net/i /top.gif このアドレスが使用される場合、サーバー内の対応する実際のリソースは、/data/w3/i/top.gif ファイルです。 注: 実際のパスは、root で指定された値に location で指定された値を加えたものです。そして、alias はその名前と同じです。alias で指定されたパスは location の別名です。location の値がどのように記述されても、リソースの実際のパスは、次のように alias で指定されたパスになります。

電子メール、smtplib、poplib、imaplib モジュールを使用して Python で電子メールを送受信する方法 電子メール、smtplib、poplib、imaplib モジュールを使用して Python で電子メールを送受信する方法 May 16, 2023 pm 11:44 PM

電子メールの流れは次のとおりです: MUA: MailUserAgent - メール ユーザー エージェント。 (つまり、Outlook に似た電子メール ソフトウェア) MTA: MailTransferAgent - メール転送エージェント。NetEase、Sina などの電子メール サービス プロバイダーです。 MDA: MailDeliverAgent - メール配信エージェント。電子メール サービス プロバイダーのサーバー sender->MUA->MTA->MTA->if

Linux システムの PATH 環境変数を設定する手順 Linux システムの PATH 環境変数を設定する手順 Feb 18, 2024 pm 05:40 PM

Linux システムで PATH 環境変数を設定する方法 Linux システムでは、PATH 環境変数を使用して、システムがコマンド ラインで実行可能ファイルを検索するパスを指定します。 PATH 環境変数を正しく設定すると、任意の場所でシステム コマンドやカスタム コマンドを実行できるようになります。この記事では、Linux システムで PATH 環境変数を設定する方法と詳細なコード例を紹介します。現在の PATH 環境変数を表示する ターミナルで次のコマンドを実行して、現在の PATH 環境変数を表示します: echo$P

パス環境変数を設定する方法 パス環境変数を設定する方法 Sep 04, 2023 am 11:53 AM

パス環境変数を設定する方法: 1. Windows システムでは、[システムのプロパティ] を開き、[プロパティ] オプションをクリックし、[システムの詳細設定] をクリックし、[システムのプロパティ] ウィンドウで [詳細] タブを選択します。 「環境変数」ボタンをクリックし、「パス」を見つけてクリックして編集し、保存します。 2. Linux システムの場合は、ターミナルを開き、bash 構成ファイルを開き、ファイルの最後に「export PATH=$PATH: file path」を追加します。ファイルを保存して保存します; 3. MacOS システムの場合、操作は上記と同じです。

Linux における PATH 環境変数の役割と重要性 Linux における PATH 環境変数の役割と重要性 Feb 21, 2024 pm 02:09 PM

「Linux における PATH 環境変数の役割と重要性」 PATH 環境変数は、Linux システムの非常に重要な環境変数の 1 つで、システムが実行可能プログラムを検索するディレクトリを定義します。 Linuxシステムでは、ユーザーがターミナルにコマンドを入力すると、環境変数PATHに設定されているディレクトリを1つずつ検索し、コマンドの実行ファイルが存在するかどうかを確認し、見つかった場合は実行します。それ以外の場合は、「commandnotfound」というプロンプトが表示されます。 PATH 環境変数の役割: 簡略化

Linux で PATH 環境変数を正しく設定する方法 Linux で PATH 環境変数を正しく設定する方法 Feb 22, 2024 pm 08:57 PM

Linux で PATH 環境変数を正しく設定する方法 Linux オペレーティング システムでは、環境変数はシステム レベルの構成情報を保存するために使用される重要なメカニズムの 1 つです。このうち、PATH 環境変数は、システムが実行可能ファイルを検索するディレクトリを指定するために使用されます。 PATH 環境変数を正しく設定することは、システムの正常な動作を保証するための重要な手順です。この記事では、Linux で PATH 環境変数を正しく設定する方法と、具体的なコード例を紹介します。 1. 現在の PATH 環境変数を確認し、ターミナルに次のコマンドを入力します。

Linux システムでエイリアスを使用してコマンド エイリアスを作成するにはどうすればよいですか? Linux システムでエイリアスを使用してコマンド エイリアスを作成するにはどうすればよいですか? Jan 07, 2024 am 11:46 AM

alias コマンドは、コマンドのエイリアスを設定するために使用されます。このコマンドを使用すると、長いコマンドをいくつか簡略化できます。 alias コマンドの機能はログイン操作に限定されていますので、以下の詳細なチュートリアルを見てみましょう。 1. 構文形式: alias [パラメータ] たとえば、操作: cat コマンドにエイリアス hhcat を与え、コマンドは: alishhcat=cat2 になります。cat コマンドを使用すると、hhcat コマンドと同等になります。コマンド エイリアス 4. コマンド エイリアスをキャンセルしたい場合は、una​​lias コマンドを使用します。形式は「unalias alias」です。hhcat エイリアスを今すぐキャンセルできます。コマンドは次のとおりです。

nginx、Apacheのエイリアス、認証機能の解析例 nginx、Apacheのエイリアス、認証機能の解析例 May 24, 2023 pm 11:10 PM

まず、Apache エイリアスの設定方法を見てみましょう。 次のようにコードをコピーします。 documentroot/www/jb51.net/www これは仮想ホストのルート ディレクトリですが、phpmyadmin はこのディレクトリに存在せず、アクセスしようとしていますそれ。サーバー名www.jb51.netserveraliasjb51.netalias/sdb "/www/public/phpmyadmin/" には、より安全なエイリアス関数 ://www.jb51.net/sdb が必要です。オプションインデックスフォローシンボリックリンクallowove

See all articles