我想知道有没有人知道在网络主机SUBDIRECTORY /子文件夹中安装Laravel 4的方法,而不会将/ app /文件夹和其他明智的文件暴露给主机的公开访问部分。
这个想法是,我可以访问http://mydomain.com/mylaravel/以使用Laravel,但同时我想避免任何人像http://mydomain.com那样做某事/ app /或http://mydomain.com/mylaravel/app/ ,基本上可以看到我的配置文件和其他代码。
I was wondering if any of you know of a way to install Laravel 4 in a web host SUBDIRECTORY / subfolder while not exposing the /app/ folder and other sensible files to the publicly accesible part of the host.
The idea is, I'd be able to access http://mydomain.com/mylaravel/ to be able to use Laravel, but at the same time I want to avoid anyone doing something like going to http://mydomain.com/app/ or http://mydomain.com/mylaravel/app/ and basically being able to see my config files and other code.
最满意答案
所以我想出了如何做到这一点。 我将以一个例子来解释。
假设你是一个域, 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/ folder,其内容已经存储在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/文件夹和其他敏感文件。 :)
So I figured out how to do this. I'll explain with an example.
Suppose you a domain, http://domain.com. Here's an example of the structure you might be using:
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/ is the root of the publicly accessible part of your web hosting files. You want to create a subfolder in /public_html/ (in this case /public_html/yourlaravel4/). In this subfolder you will store all the contents of the Laravel 4 public/ folder.
Now, for the rest of the files. You have to go to the root of your web hosting files, that is, you wanna be at domain.com/ level, therefore being able to see public_html/ and some other folders. Then, we need to create a folder here, where Laravel 4's base files will be stored. In this case, it's domain.com/yourlaravel4_base/. Inside yourlaravel4_base/ we need to store every file and folder that exists in the base Laravel 4 directory. That would be app/, bootstrap/, vendor/, server.php, etc. Everything EXCEPT the /public/ folder, whose contents you already stored in public_html/yourlaravel4/.
Finally, we need to edit 2 files: Laravel's /bootstrap/paths.php and /public/index.php.
In the paths.php file, replace:
'app' => __DIR__.'/../app',with:
'app' => __DIR__.'/../../yourlaravel4_base/app',In the paths.php file, replace:
'public' => __DIR__.'/../public',with:
'public' => __DIR__,In the paths.php file, replace:
'base' => __DIR__.'/..',with:
'base' => __DIR__.'/../../yourlaravel4_base',In paths.php, replace:
'storage' => __DIR__.'/../app/storage',with:
'storage' => __DIR__.'/../../yourlaravel4_base/app/storage',In index.php, replace:
require __DIR__.'/../bootstrap/autoload.php';with:
require __DIR__.'/../../yourlaravel4_base/bootstrap/autoload.php';In index.php, replace:
$app = require_once __DIR__.'/../bootstrap/start.php';with:
$app = require_once __DIR__.'/../../yourlaravel4_base/bootstrap/start.php';Upload changes. Now you should be able to have Laravel 4 installed in a subfolder in your website without actually exposing the app/ folder and other sensitive files. :)
更多推荐
发布评论