如何在没有公开暴露/ app /文件夹的情况下将Laravel 4安装到虚拟主机子文件夹?

我想知道是否有人知道在Web主机SUBDIRECTORY /子文件夹中安装Laravel 4的方法,同时不会将/ app /文件夹和其他合理的文件暴露给主机的公开访问部分。

这个想法是,我可以访问http://mydomain.com/mylaravel/ ,以便能够使用Laravel,但同时我想避免任何人进入http://mydomain.com / app /或http://mydomain.com/mylaravel/app/ ,基本上可以看到我的configuration文件和其他代码。

所以我想出了如何做到这一点。 我会用一个例子来解释。

假设你是一个域, 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/是您的networking托pipe文件的公共可访问部分的根。 你想在/public_html/ (在这种情况下/public_html/yourlaravel4/ )创build一个子文件夹。 在这个子文件夹中,您将存储Laravel 4 public/文件夹的所有内容

现在,其余的文件。 你必须去你的网站托pipe文件的根,也就是说,你想在domain.com/级,因此能够看到public_html/和一些其他文件夹。 然后,我们需要在这里创build一个文件夹,其中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文件中,replace:

 'app' => __DIR__.'/../app', 

有:

 'app' => __DIR__.'/../../yourlaravel4_base/app', 

paths.php文件中,replace:

 'public' => __DIR__.'/../public', 

有:

 'public' => __DIR__, 

paths.php文件中,replace:

 'base' => __DIR__.'/..', 

有:

 'base' => __DIR__.'/../../yourlaravel4_base', 

paths.php ,replace:

 'storage' => __DIR__.'/../app/storage', 

有:

 'storage' => __DIR__.'/../../yourlaravel4_base/app/storage', 

index.php ,replace:

 require __DIR__.'/../bootstrap/autoload.php'; 

有:

 require __DIR__.'/../../yourlaravel4_base/bootstrap/autoload.php'; 

index.php ,replace:

 $app = require_once __DIR__.'/../bootstrap/start.php'; 

有:

 $app = require_once __DIR__.'/../../yourlaravel4_base/bootstrap/start.php'; 

上传更改。 现在,您应该可以将Laravel 4安装在网站的子文件夹中,而不必实际公开app/文件夹和其他敏感文件。 🙂

你可以使用一个别名:没有hankey-pankey在你的系统上有广泛的目录。

在你的httpd.conf或pipe理面板中指定:

 /mylaravel/ /path/to/laravel/public 

此外,在你的Laravel的app.php中指定URL

29号线

 'url' => 'http://yourdomain.com/mylaravel/', 

最终在/public/.htaccess中设置RewriteBase

 RewriteBase /mylaravel/ 

像魅力一样工作,并保持您的目录结构清洁,重点!

人,人! 没有必要过分复杂的事情!

(对于其他的公用文件夹,如htdocswww只需在下面的public_html中replace为你的。)

  1. 把所有的Laravel的东西放在顶层文件夹中(这样app文件夹就在public_html文件夹的旁边)
  2. 将所有文件从public移动到public_html (一定要移动隐藏的文件,如.htaccess !)
  3. 删除现在为空的公用文件夹
  4. bootstrap/path.php改变

    'public' => __DIR__.'/../public',

    'public' => __DIR__.'/../public_html',

  5. 完成。

伊曼纽尔答案不适合我,但我做了一些改变,使其工作。 虽然我用我的web根目录是一个项目的来源。 它在那里; 我有htdocs文件夹作为根文件夹,但你可能有其他,如public_html,www等。 你可以很容易地用你所拥有的replace我的htdocs。

好的。

我的灵魂

根/ 
       htdocs目录
      的.htaccess
       .override 

首先我解决了与composer php在windows上的本地主机上的所有laravel依赖项。 之后,我把整个软件包打包成了laravel4.zip。 在我的htdocs我创build一个laravel文件夹,我没有上传和解压zip文件。

  htdocs中/
         laravel /
                 应用
                 引导
                 上市 
                 供应商
                  ... 

所以在我解压缩文件后,我将公用文件夹中的所有内容都移动到htdocs文件夹中

  htdocs中/
         laravel
        包
        的.htaccess
         favicon.ico的
        的index.php
        的robots.txt 

现在我们必须重写htdocs / index.php和htdocs / laravel / bootstrap / paths.php中的一些path

但让我们打开htdocs / laravel / bootstrap / paths.php。 你会看到

  'app'=> __DIR __。'/ .. / app', 

这是什么意思 。 这意味着我们站在htdocs / laravel / bootstrap /path。 那里我们需要退出这个文件夹laravel文件夹然后去应用程序文件夹。 好 。 这是路由的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 

这里给你一个简单的两个教程:

链接1

链接2

如果您在面板中使用addondomain或者subdomaind向导,向导应该询问您的文档根目录。 例如我想addon droidman.com,向导应该build议我做droidman.com文件夹。 在这一步告诉向导使droidman.com/public文件夹。 然后把你的应用程序在droidman.com文件夹。 你的主机将查看公共文件夹;)。 问题解决了

如果你想简单地设置共享主机上的Laravel项目,你有cPanel访问,那么你可以做以下步骤,我已经遵循,它运作良好。

第1步:在本地机器上制作整个Laravel应用程序的zip或tar文件。

第2步:转到Cpanel。 上传zip / tar文件到public_html目录,然后解压缩。 (您也可以为您的laravel应用程序创build单独的文件夹。因为我想上传多个Laravel应用程序,我已经为每个应用程序创build了单独的目录,如下图所示。

在这里输入图像说明

步骤3:现在进入“Addon Domain”并更改指定域的文档根目录。 将该域指向公用文件夹。

在这里输入图像说明

现在检查你的域名将redirect到public / index.php文件。 没有必要改变任何path。

如果你使用的是Apache服务器,最简单的方法就是将你的Laravel应用程序存储在www根目录之外(或者保存在www根目录下的文件夹中),然后将所需的子文件夹链接到laravel中的公共文件夹

例如,我把我的laravel装置放在:

 /usr/local/share/myLaravel 

然后,在您的公共www文件夹中,创build一个符号链接:

 ln -s /usr/local/share/myLaravel/public mylaravel 

你需要对你的安装进行一些调整,比如把你的Rewrite Base放到/ mylaravel /中,并且确保你的configuration文件允许覆盖基本位置,但这比修改所有东西简单。

请务必检查您的权限。 我通过以下部署,虽然我不推荐它。

我使用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 

之后,我会收到一条消息,例如“Whoop,看起来像是出了什么问题”(或者根据您的debugging设置发生错误)。 要解决这个问题, 我只需要将我的权限更改为我的文件夹755 。 参考: http : //kb.webhostface.com/laravel/fix-permission-denied-error-laravel

总的来说,我将回去尝试改变权限的原始方式,因为我发现这条路线不太安全,更依赖于我的托pipe客户服务。

*****注意*****这个命令显然会删除你的public_html(有时也称为public或www)文件夹。 您需要备份其中的所有文件,因为您正在删除它。 另外,您需要准备好通过客户服务来恢复它。 许多托pipe服务不允许您自行重新创build文件夹。