次のチュートリアルコラムでは、Mac 開発環境 Laravel Valet で Flarum フォーラム システムを構成して実行する実装方法を紹介します。
Laravel Valet は、Mac OS X 向けに提供される最小限の開発環境です。ただし、Valet の構成は、従来の HTTP サーバー (Apache、Nginx など) とは若干異なります。構成ファイル内の URL を書き換えるために、Valet は PHP クラスでモジュール式の URL 処理を定義します。 FlarumとLaravelではデフォルトのディレクトリ構造が異なるため、Valetでアクセス設定を定義する必要があります。~/.valet/Drivers ディレクトリにはデフォルトの構成ファイル SampleValetDriver.php があり、これには 3 つのメソッド (servers、isStaticFile、frontControllerPath) が含まれています。ここで、独自の構成ファイル FlarumValetDriver.php を構成し、次の 3 つの方法に従って独自のドライバー拡張機能を作成する必要があります。
cp SampleValetDriver.php FlarumValetDriver.php
FlarumValetDriver.php を開き、最初に、Valet を指定する必要がある Serves メソッドを書き換えます。 Web ルート ディレクトリ (ここでは flarum です。異なる場合は、独自の Flarum アプリケーション ディレクトリに変更する必要があります) の下に対応する Flarum アプリケーション ディレクトリが存在するかどうかを確認します。これは、Nginx でのルートの定義に似ています:
public function serves($sitePath, $siteName, $uri){ return is_dir($sitePath.'/vendor/flarum') && file_exists($sitePath.'/flarum'); }
次に、isStaticFile メソッドで、指定された URL が静的ファイルを指しており、静的ファイルが存在するかどうかを判断します。これは、nginx で静的ファイル アクセスを定義する方法と似ています。 Apache の mod_rewrite や Nginx の try_uri に似たfrontControllerPath メソッド。ここでリクエストのアクセス パスを書き換えることができます:
public function isStaticFile($sitePath, $siteName, $uri){ if ($this->isActualFile($staticFilePath = $sitePath.$uri)) { return $staticFilePath; } return false; }
最終結果は次のようになり、~/.valet/Drivers に保存します:
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'; }
この方法でファルムの全ルートに正常にアクセスできるようになりました。アクセス エラーが報告された場合:
<?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'; } }
これは、Valet が最新バージョンにアップグレードされていないためです。次のコマンドを実行して Valet をアップグレードしてください:
Call to undefined method FlarumValetDriver::isActualFile() in /Users/sunqiang/.valet/Drivers/FlarumValetDriver.php on line 29
以上がMac 開発環境 Laravel Valet で Flarum フォーラム システムを構成および実行する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。