温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

在Mac开发环境Laravel Valet中怎样配置运行Flarum论坛系统

发布时间:2021-01-29 15:58:30 来源:亿速云 阅读:173 作者:小新 栏目:编程语言

这篇文章给大家分享的是有关在Mac开发环境Laravel Valet中怎样配置运行Flarum论坛系统的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Laravel Valet 中配置运行 Flarum 论坛系统的实现方法

Laravel Valet 是为Mac OS X提供的极简开发环境,但是,Valet的配置和传统的HTTP服务器(Apache、Nginx等)有些区别,不同于在配置文件中重写URL,Valet通过在PHP类中使用一种模块化方式定义URL处理。由于Flarum和Laravel默认目录结构不同,所以我们需要在Valet定义其访问配置。

在~/.valet/Drivers目录下有个默认的配置文件SampleValetDriver.php,其中包含了三个方法:serves,isStaticFile 和 frontControllerPath。我们现在要配置一个自己的配置文件FlarumValetDriver.php,仿照这三个方法编写自己的驱动扩展:

cp SampleValetDriver.php FlarumValetDriver.php

打开FlarumValetDriver.php,首先重写serves方法,在该方法中我们要指定Valet对应Web根目录下对应的Flarum应用目录(我这里是flarum,如果不一样需要修改为你自己的Flarum应用目录)是否存在,这有点类似Nginx中定义root:

public function serves($sitePath, $siteName, $uri){
    return is_dir($sitePath.'/vendor/flarum')
        && file_exists($sitePath.'/flarum');
}

接下来在isStaticFile方法中判断给定URL是否指向静态文件,并且静态文件确实存在,这类似于我们在nginx中定义静态文件访问:

public function isStaticFile($sitePath, $siteName, $uri){
    if ($this->isActualFile($staticFilePath = $sitePath.$uri)) {
        return $staticFilePath;
    }

    return false;
}

最后重写frontControllerPath方法,该方法类似Apache中的mod_rewrite和Nginx中的try_uri,在这里我们可以重写请求访问路径:

public function frontControllerPath($sitePath, $siteName, $uri)
{
    if (strpos($uri,'/admin') === 0) {
        return $sitePath.'/admin.php';
    }
    if (strpos($uri,'/api') === 0) {
        return $sitePath.'/api.php';
    }

    return $sitePath.'/index.php';
}

最终结果如下所示,我们将其保存到~/.valet/Drivers下:

<?php

class FlarumValetDriver extends ValetDriver
{
    /**
     * Determine if the driver serves the request.
     *
     * @param  string  $sitePath
     * @param  string  $siteName
     * @param  string  $uri
     *
     * @return bool
     */
    public function serves($sitePath, $siteName, $uri)
    {
        return is_dir($sitePath.'/vendor/flarum') && file_exists($sitePath.'/flarum');
    }

    /**
     * Determine if the incoming request is for a static file.
     *
     * @param  string  $sitePath
     * @param  string  $siteName
     * @param  string  $uri
     *
     * @return string|false
     */
    public function isStaticFile($sitePath, $siteName, $uri)
    {
        if ($this->isActualFile($staticFilePath = $sitePath.$uri)) {
            return $staticFilePath;
        }
        return false;
    }

    /**
     * Get the fully resolved path to the application's front controller.
     *
     * @param  string  $sitePath
     * @param  string  $siteName
     * @param  string  $uri
     *
     * @return string
     */
    public function frontControllerPath($sitePath, $siteName, $uri)
    {
        if (strpos($uri,'/admin') === 0) {
            return $sitePath.'/admin.php';
        }
        if (strpos($uri,'/api') === 0) {
            return $sitePath.'/api.php';
        }

        return $sitePath.'/index.php';
    }
}

这样就可以正常访问Falrum的所有路由了。如果访问报错:

Call to undefined method FlarumValetDriver::isActualFile() in /Users/sunqiang/.valet/Drivers/FlarumValetDriver.php on line 29

这是因为Valet未升级到最新版本,执行以下命令升级Valet即可:

composer global update

感谢各位的阅读!关于“在Mac开发环境Laravel Valet中怎样配置运行Flarum论坛系统”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI