我想知道你们中是否有人知道一种在网络主机 SUBDIRECTORY / 子文件夹中安装 Laravel 4 的方法,同时不将 /app/ 文件夹和其他敏感文件暴露给主机的可公开访问部分。
这个想法是,我可以访问http://mydomain.com/mylaravel/以使用 Laravel,但同时我想避免任何人做类似访问http://mydomain.com的事情/app/或http://mydomain.com/mylaravel/app/基本上可以看到我的配置文件和其他代码。
我想知道你们中是否有人知道一种在网络主机 SUBDIRECTORY / 子文件夹中安装 Laravel 4 的方法,同时不将 /app/ 文件夹和其他敏感文件暴露给主机的可公开访问部分。
这个想法是,我可以访问http://mydomain.com/mylaravel/以使用 Laravel,但同时我想避免任何人做类似访问http://mydomain.com的事情/app/或http://mydomain.com/mylaravel/app/基本上可以看到我的配置文件和其他代码。
所以我想出了如何做到这一点。我会用一个例子来解释。
假设您是一个域http://domain.com。这是您可能正在使用的结构的示例:
domain.com/ (the root of your web hosting)
|-- yourlaravel4_base/
|-- [some other folders...]
|-- public_html/ (where your html files and such go)
| |-- [some other folders...]
| |-- yourlaravel4/
/public_html/
是您的网络托管文件的可公开访问部分的根。您想在/public_html/
(在这种情况下/public_html/yourlaravel4/
)创建一个子文件夹。在这个子文件夹中,您将存储Laravel 4 文件夹的所有内容public/
。
现在,对于其余的文件。你必须去你的虚拟主机文件的根目录,也就是说,你想处于domain.com/
水平,因此能够看到public_html/
和其他一些文件夹。然后,我们需要在这里创建一个文件夹,用于存放 Laravel 4 的基础文件。在这种情况下,它是domain.com/yourlaravel4_base/
. 在里面yourlaravel4_base/
,我们需要存储 Laravel 4 基础目录中存在的每个文件和文件夹。那将是app/
, bootstrap/
, vendor/
,server.php
等。除了/public/
文件夹,您已经将其内容存储在public_html/yourlaravel4/
.
最后,我们需要编辑 2 个文件:Laravel/bootstrap/paths.php
和/public/index.php
.
在paths.php
文件中,替换:
'app' => __DIR__.'/../app',
和:
'app' => __DIR__.'/../../yourlaravel4_base/app',
在paths.php
文件中,替换:
'public' => __DIR__.'/../public',
和:
'public' => __DIR__,
在paths.php
文件中,替换:
'base' => __DIR__.'/..',
和:
'base' => __DIR__.'/../../yourlaravel4_base',
在paths.php
中,替换:
'storage' => __DIR__.'/../app/storage',
和:
'storage' => __DIR__.'/../../yourlaravel4_base/app/storage',
在index.php
中,替换:
require __DIR__.'/../bootstrap/autoload.php';
和:
require __DIR__.'/../../yourlaravel4_base/bootstrap/autoload.php';
在index.php
中,替换:
$app = require_once __DIR__.'/../bootstrap/start.php';
和:
$app = require_once __DIR__.'/../../yourlaravel4_base/bootstrap/start.php';
上传更改。现在,您应该能够将 Laravel 4 安装在您网站的子文件夹中,而不会实际暴露该app/
文件夹和其他敏感文件。:)
您可以使用别名:no hankey-pankey 与您系统上的广泛目录。
在您的 httpd.conf 或管理面板中指定:
/mylaravel/ /path/to/laravel/public
此外,在 Laravel 的 app.php 中指定 URL
29号线
'url' => 'http://yourdomain.com/mylaravel/',
最终在 /public/.htaccess 中设置 RewriteBase
RewriteBase /mylaravel/
像魅力一样工作,让您的目录结构保持简洁明了!
人,人!无需将事情过度复杂化!
(对于其他公用文件夹,例如htdocs
或www
只需将public_html
以下内容替换为您的。)
app
文件夹就在文件夹旁边public_html
)public
到移动public_html
(确保同时移动隐藏文件,例如.htaccess
!)public
文件夹bootstrap/path.php
变化中
'public' => __DIR__.'/../public',
到
'public' => __DIR__.'/../public_html',
伊曼纽尔的回答对我不起作用,但我做了一些更改以使其正常工作。虽然我使用我的网络根作为项目的来源。它在那里;我将 htdocs 文件夹作为根文件夹,但您可能还有其他文件夹,例如 public_html 、 www 等。您可以轻松地将我的 htdocs 替换为您拥有的。
美好的 。
我的目录
根/ 文档 .htaccess .override
首先,我使用 composer 解决了我在 windows 上的本地主机上的所有 laravel 依赖项。之后我确实将整个包打包到 laravel4.zip 中。在我的 htdocs 中,我创建了一个 laravel 文件夹,并在其中上传并解压缩了 zip 文件。
htdocs/ 拉拉维尔/ 应用程序 引导程序 上市 供应商 ...
所以在我解压缩文件后,我将公共文件夹中的所有内容移动到 htdocs 文件夹中
htdocs/ 拉拉维尔 包 .htaccess favicon.ico 索引.php 机器人.txt
现在我们必须重写 htdocs/index.php 和 htdocs/laravel/bootstrap/paths.php 中的一些路径
但是让我们打开 htdocs/laravel/bootstrap/paths.php 。你会看到
'app' => __DIR__.'/../app',
这是什么意思 。这意味着我们站在 htdocs/laravel/bootstrap/ path 。在那里我们需要退出这个文件夹到 laravel 文件夹然后去 app 文件夹。行 。这是用于路由的 laravel 的结构。如果你做对了,你可以让你的 laravel 运行。
寻找
'public' => __DIR__.'/../public',
并将其更改为
'public' => __DIR__.'/../../htdocs',
(简单哈)其中一个(../)我们可以上一个文件夹。所以现在我们在 laravel 文件夹。但我们需要在 htdocs 中。所以我们必须写另一个 (../) 才能到达那里。
打开 htdocs/index.php 并找到
需要 __DIR__.'/../bootstrap/autoload.php';
把它改成
需要'laravel/bootstrap/autoload.php';
require 是一个内置的 php 函数,所以我们将它视为一个简单的 php 。我们真的不需要 laravel 风格来获取 autoload.php 文件。所以只需将其移除并选择经典风格
寻找
$app = require_once __DIR__.'/../bootstrap/start.php';
把它改成
$app = require_once 'laravel/bootstrap/start.php';
如果您尝试将 Laravel 5.1 运行到共享主机空间中,并且上述所有答案似乎与实际的 Laravel 文件/文件夹有点不同,或者您正在寻找如何将 laravel 5/5.1 放入您的子目录中共享主机空间,因此您可以像这样访问它:
http://mywebsite.com/mylaravel/
所以这个答案是给你的,首先确保你满足
Laravel 5.1 要求:
- PHP 5.5
- PHP extension Mcrypt
- PHP extension Mbstring
- PHP extension OpenSSL
这里有一个简单的两个教程给你:
如果您在面板中使用 addondomain 或 subdomaind 向导,向导应该要求您提供文档根目录。例如我想添加 droidman.com,向导应该建议我制作 droidman.com 文件夹。在这一步告诉向导制作 droidman.com/public 文件夹。然后将您的应用程序放在 droidman.com 文件夹中。您的主机将查看公用文件夹;)。问题解决了
如果你想简单地在共享主机上设置 Laravel 项目并且你有 cPanel 访问权限,那么你可以按照我遵循的步骤进行操作,并且效果很好。
第 1 步:在本地机器上制作整个 Laravel 应用程序的 zip 或 tar 文件。
第 2 步:转到 Cpanel。将 zip/tar 文件上传到 public_html 目录,然后解压。(您也可以为您的 laravel 应用程序创建单独的文件夹。因为我想上传多个 Laravel 应用程序,所以我为每个应用程序创建了单独的目录,如下图所示。)
第 3 步:现在转到“附加域”并更改您指定域的文档根目录。将域指向公用文件夹。
现在检查您的域,它将重定向到 public/index.php 文件。无需更改任何路径。
如果您使用的是 apache 服务器,最简单的方法是将您的 Laravel 应用程序存储在 www 根目录之外(或 www 根目录中的受保护文件夹中),然后符号链接所需的子文件夹以将其指向 laravel 中的公用文件夹
例如,我将我的 laravel 安装放在:
/usr/local/share/myLaravel
然后,在您的公共 www 文件夹中,创建一个符号链接,如下所示:
ln -s /usr/local/share/myLaravel/public mylaravel
您需要对安装进行一些调整,例如将 Rewrite Base 放入 /mylaravel/ 并确保您的配置文件允许在基本位置进行覆盖,但这比修改所有内容要简单。
确保检查您的权限。尽管我不推荐它,但我通过以下方式进行了部署。
我使用 SSH 并做了类似的事情:
rm -rf public_html/ // WARNING: READ NOTE AT THE BOTTOM BEFORE RUNNING
ln -s project_folder/public/ public_html // where the format is ln -s target name
之后,我会收到类似“哎呀,好像出了点问题”的消息(或错误,取决于您的调试设置)。要解决此问题,我只需将文件夹的权限更改为 755 即可。参考: http: //kb.webhostface.com/laravel/fix-permission-denied-error-laravel
总的来说,我将返回并尝试更改权限的原始方式,因为我发现这条路线不太安全,并且更依赖于我的托管客户服务。
*****注意***** 此命令显然会删除您的 public_html(有时也称为 public 或 www)文件夹。您需要备份其中的所有文件,因为您正在删除它。此外,您需要准备好通过客户服务来恢复它。许多托管服务不允许您简单地自行重新创建文件夹。