0

アップデート

下に配置された PHP ファイル/storage/app/thirdpartydirectoryが実行されていないようで、代わりに Laravel NotFoundHttpException がスローされます。http://example.com/thirdpartydirectoryから簡単なテキスト ファイルや画像などにアクセスできます。

元の質問

コードの展開に Envoyer.io を使用して Laravel 5 サイトを構築しています。Envoyer の仕組みでは、新しいコードがサイトにプッシュされ、/releasesディレクトリの 下に配置さ/currentれ、トップ レベルからシンボリック リンクされます (したがって、/current常に最新のサブディレクトリを指し/releasesます)。

問題は、自分のサイトの/publicディレクトリに置いたものはすべて Envoyer の展開に含まれているため、新しいコードをプッシュするたびに複製されることです。サードパーティのアプリを使用しようとしていますが、そのアプリindex.phpやその他のファイル/ディレクトリを外部に直接公開する必要があります。アプリが最初に読み込まれると、インストール プロセスが開始され、追加の構成ファイルがさまざまなフォルダーにインストールされます。コードの次のバッチを展開する/publicと、サードパーティのアプリによって生成されたインストール ファイルとキャッシュ ファイルなしで再度プッシュされるため、インストール プロセスを何度も実行する必要があるというループが発生します。

これについて Taylor Otwell に連絡したところ、彼の提案は、アプリを配置し、/storage/app/thirdpartyapp各リリースのpublicディレクトリからシンボリック リンクを作成してから、新しい展開をそれぞれアクティブにすることでした。

cd {{release}}
ln -s /home/eyf/storage/app/thirdpartyapp public/thirdpartyapp

これにより問題なくシンボリック リンクが作成されますが、アプリ ( http://example.com/thirdpartyapp ) にアクセスしようとすると、Laravel NotFoundHttpException ページでスタックします。アプリには index.php があります。 http://example.com/thirdpartyapp/index.phpにアクセスすると、代わりに Laravel サイトのインデックス ページが読み込まれます。まるでシンボリック リンクと/thirdpartyappURL を完全に無視しているかのようです。

アプリには次のものが同梱されています.htaccessが、これらすべてに違いがあるかどうかはわかりません。

<IfModule mod_alias.c>
    # by default disallow access to the base git folder
    RedirectMatch /\.git(/|$) /404
</IfModule>

# cache images for a while
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType text/javascript "access plus 1 month"
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType image/jpg "access plus 1 month"
    ExpiresByType image/png "access plus 1 month"
</IfModule>

# compress output if we can
<IfModule mod_deflate.c>
    # Set output filter for zipping content
    SetOutputFilter DEFLATE
    # Netscape 4.x and 4.06-4.08 have issues
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    # MSIE can be an issue, for now catch all MSIE
    BrowserMatch \bMSIE[56] !no-gzip !gzip-only-text/html
    # Exclude file types from compression
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|pdf|zip|tar|rar|gz|dmg|mp3|mp4|m4a|m4p|mov|mpe?g|qt|swf)$ no-gzip dont-vary
    # Make sure proxy servers deliver what they're given
    <IfModule mod_headers.c>
        Header append Vary User-Agent env=!dont-vary
    </IfModule>
</IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine ON

    # Set this if you have your installation in a subdirectory
    # RewriteBase /openvbx

    # By default always use SSL
    #RewriteCond %{HTTPS} !=on
    #RewriteRule ^(.*) https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule ^(.*) index.php?vbxsite=$1 [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L,QSA]
    #RewriteRule ^(.*) index.php/$1 [L,QSA]

    ErrorDocument 404 /fallback/rewrite.php
</IfModule>
4

1 に答える 1

0

どうやら/storageLaravel アプリの下に配置された PHP コードは実行されません。サード パーティ アプリのディレクトリを親フォルダーに移動し、シンボリック リンクを作成したところ、すべてが機能するようになりました。

于 2015-04-27T23:26:56.400 に答える