我想知道是否有人知道在Web主机SUBDIRECTORY /子文件夹中安装Laravel 4的方法,同时不将/ app /文件夹和其他敏感文件暴露给主机的公共可访问部分。
我的想法是,我可以访问http://mydomain.com/mylaravel/以便能够使用Laravel,但同时我想避免任何人做像http://mydomain.com/app/或{{3并且基本上能够看到我的配置文件和其他代码。
答案 0 :(得分:64)
所以我想出了如何做到这一点。我将用一个例子来解释。
假设您是一个域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/
文件夹的所有内容。
现在,对于其余的文件。您必须转到Web托管文件的根目录,也就是说,您希望处于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/
文件夹和其他敏感文件。 :)
答案 1 :(得分:28)
您可以使用别名:no hankey-pankey,系统上包含广泛的目录。
在httpd.conf或admin-panel中指定:
/mylaravel/ /path/to/laravel/public
此外,请在Laravel的app.php中指定网址
第29行
'url' => 'http://yourdomain.com/mylaravel/',
最终在/public/.htaccess
中设置RewriteBaseRewriteBase /mylaravel/
像魅力一样工作,保持您的目录结构清洁,重点突出!
答案 2 :(得分:7)
人,人!不需要过于复杂的事情!
(对于其他公共文件夹,例如htdocs
或www
,只需将以下public_html
替换为您的文件夹。)
app
文件夹位于public_html
文件夹旁边)public
移至public_html
(务必同时移动隐藏文件,例如.htaccess
!)public
文件夹在bootstrap/path.php
更改
'public' => __DIR__.'/../public',
到
'public' => __DIR__.'/../public_html',
答案 3 :(得分:3)
很好。
我的dircetory
root/ htdocs .htaccess .override
首先,我使用composer解决了我在localhost上的所有laravel依赖关系。之后,我把整个包裹装进了laravel4.zip。在我的htdocs中,我创建了一个laravel文件夹,我确实上传了zip文件并将其解压缩。
htdocs/ laravel/ app bootstrap public vendors ...
所以在我解压缩文件后,我将公共文件夹中的所有内容移动到htdocs文件夹
htdocs/ laravel packages .htaccess favicon.ico index.php robots.txt
现在我们必须在htdocs / index.php和htdocs / laravel / bootstrap / paths.php重写一些pathes
但是让我们打开htdocs / laravel / bootstrap / paths.php。你会看到
'app' => __DIR__.'/../app',这是什么意思。这意味着我们站在htdocs / laravel / bootstrap / path。我们需要将此文件夹退出到laravel文件夹然后转到app文件夹。好 。这是用于路由的laravel的结构。如果你做对了,你可以让你的laravel运行。
找到
'public' => __DIR__.'/../public',
并将其更改为
'public' => __DIR__.'/../../htdocs',
(简单ha)与其中一个(../)我们可以上一个文件夹。所以现在我们在laravel文件夹。但我们需要在htdocs。所以我们必须写另一个(../)来实现目标。
打开htdocs / index.php和 找到
require __DIR__.'/../bootstrap/autoload.php';
将其更改为
require 'laravel/bootstrap/autoload.php';
require是一个内置的php函数,因此我们将它视为一个简单的php。我们不需要laravel样式来获取autoload.php文件。所以简单地删除它并去寻找经典风格
找到
$app = require_once __DIR__.'/../bootstrap/start.php';
将其更改为
$app = require_once 'laravel/bootstrap/start.php';
答案 4 :(得分:2)
如果您正在尝试将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
这里有一个简单的两个教程:
答案 5 :(得分:1)
如果您在面板中使用addondomain或subdomaind向导,向导应该要求您提供文档根目录。例如,我想添加droidman.com, 向导应该建议我制作droidman.com文件夹。在这一步告诉向导制作droidman.com/public文件夹。然后将您的应用程序放在droidman.com文件夹中。您的主机将查看公用文件夹;)。问题解决了
答案 6 :(得分:1)
如果您只想在共享主机上设置Laravel Project并且您拥有cPanel访问权限,那么您可以执行以下步骤,我已经遵循并且运行良好。
步骤1:在本地计算机上制作整个Laravel应用程序的zip或tar文件。
第2步:转到Cpanel。将zip / tar文件上传到public_html目录,然后解压缩。 (您还可以为laravel应用程序创建单独的文件夹。由于我想上传多个Laravel应用程序,我为每个应用程序创建了单独的目录,如下图所示。)
第3步:现在转到Addon Domain'并更改指定域的文档根目录。将域指向公用文件夹。
现在检查您的域名,它将重定向到public / index.php文件。无需更改任何路径。
答案 7 :(得分:0)
如果您使用的是apache服务器,最简单的方法是将您的Laravel应用程序托管存储在www根目录之外(或在www根目录下的受保护文件夹中),然后符号链接所需的子文件夹以指向公众laravel中的文件夹
例如,我将我的laravel装置放在:
/usr/local/share/myLaravel
然后,在您的公共www文件夹中,创建一个符号链接,如下所示:
ln -s /usr/local/share/myLaravel/public mylaravel
您需要对安装进行一些调整,例如将Rewrite Base放到/ mylaravel /并确保配置文件允许覆盖基本位置,但这比修改所有内容更简单。
答案 8 :(得分:-3)
请务必检查您的权限。我通过以下方式进行了部署,但我不推荐它。
我使用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)文件夹。您需要备份其中的所有文件,因为您要删除它。此外,您需要准备好通过客户服务来恢复它。许多托管服务不允许您自己重新创建文件夹。