无法让 Laravel 4 在本地主机上工作

Posted

技术标签:

【中文标题】无法让 Laravel 4 在本地主机上工作【英文标题】:Can't make Laravel 4 to work on localhost 【发布时间】:2012-12-29 23:46:35 【问题描述】:

在阅读了 Laravel4 测试版发布的公告后,我第一次尝试 Laravel。

我关注 these steps 我安装了 composer 和 laravel 以及它所需的所有依赖项。我将 laravel 放在我的 ~/public_html 目录中 - 因为我习惯使用 Codeigniter,但我认为这里有问题。

如果我将浏览器指向http://localhost/~carlo/laravel-develop/,它只会显示目录的内容。

然后,虽然在文件系统上我有一个 laravel-develop/public 文件夹,但它没有出现在浏览器上。

我发现像这样更改.htaccess

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteCond %REQUEST_FILENAME !-f 
RewriteCond %REQUEST_FILENAME !-d 
RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule>

当我尝试访问公用文件夹时出现错误。 错误:

ErrorException:警告:file_put_contents(/home/carlo/public_html/laravel-develop/app/config/../storage/meta/services.json):无法打开流:/home/carlo/public_html 中的权限被拒绝/laravel-develop/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php 第77行

另一个:

/home/carlo/public_html/laravel-develop/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php 第77行

然后是一长串错误。最后一个是:

require_once('/home/carlo/public_html/laravel-develop/start.php') 在 /home/carlo/public_html/laravel-develop/public/index.php 第 53 行

【问题讨论】:

如果你刚开始,你应该使用 Laravel 3。 这里有同样的问题。不幸的是,这里的答案都没有帮助。我很肯定我的权限设置正确,并且 .htaccess 很好。仍然无法让它工作。 @dualed 这不是一个很好的建议......恕我直言,当然最好学习 L4 @Gadoma 在一月份,当时 Laravel 4 处于预测试阶段。 【参考方案1】:

尝试使用终端更改storage文件夹的文件夹权限:

chmod -R 777 storage

有关此事的更多信息可以找到here。

【讨论】:

如果有帮助,请将此答案标记为正确。这对我有用多次。 这对我也有用...但是为什么我不能将存储组设置为 www-data 并将其权限设置为 775? 其实chmod 757就够了。使用 777 可能有点过头了。 chmod -R 775 将是一个更安全的解决方案。在这种情况下,存储文件夹组应该与 Web 服务器的相同。 775 仅在我完成 sudo chown -R _www:_www mywebfolder 之后才为我工作。请参阅下面的答案。【参考方案2】:

您的错误是因为 laravel 无法写入 app/storage 文件夹。其余的只是一个堆栈跟踪。为了使 storage 文件夹可写,cd 到你的 app 文件夹,然后运行:

chmod -R 777 storage

【讨论】:

我认为这不是权限问题,因为当我将浏览器指向http://localhost/~carlo/laravel-develop/ 时,public 目录甚至不会出现在目录树中。按照您的建议,我还是更改了权限,但它不起作用。 那你可能把那个 .htaccess 放在根目录下,这就是为什么它不显示公用文件夹... .htaccess 进入公用目录。 755 不会使目录对 Web 服务器可写,因为您有 RWX RX RX 但每个都需要 RWX 所以chmod -R 777 storage【参考方案3】:

生产方式,对于不熟悉Unix的人来说复杂度适中,但更安全

    进入超级用户模式(sudo -s 或 su)。 创建群组web (groupadd web) 将你的主用户添加到组web(假设你的用户是cool_user,所以运行usermod -a -G web cool_user) 将 php-fpm 或 web 服务器用户(如果 php 用作 SAPI 模块)添加到 web 组(例如,在 CentOS php-fpm 上使用 apache 用户名,因此在大多数情况下这将起作用: usermod -a -G web apache) 递归地将您的项目根目录组所有者更改为web (chgrp -R web /path/to/project/root/) 为组授予递归写入权限 (chmod -R g+w /path/to/project/root/ 可选要允许您的用户访问所有由apache(或其他一些)用户新创建的文件和文件夹,通过设置groupid让他们获得与其父文件夹相同的组所有权em> 在您的项目根目录 (chmod -R g+s /path/to/project/root/) 上递归位。

瞧!。

快速而肮脏的方式,对于那些不关心安全性并希望不惜一切代价使其工作的人,不安全

    进入超级用户模式(sudo -s 或 su)。 以递归方式为所有用户授予完全权限(读、写、执行) (chmod -R o=rwx /path/to/project/root/

【讨论】:

【参考方案4】:

在我的例子中,我通过在文件 /app/config/app.php 中修改默认设置解决了这个错误:

'url' => 'http://localhost',

到我的本地自定义虚拟主机 url:

'url' => 'http://mydomain.local',

这似乎是解决问题的关键更改(我还修改了存储文件夹,如此处所建议的)

希望这对你们中的一些人有所帮助..

【讨论】:

【参考方案5】:

除此之外,如果您使用的是 virtualbox/vagrant VM 类型的环境,那么在我的 Mac 上,我需要在主机 (mac) 系统上发出 chmod,但在我的 Windows 机器上,直接发出 chmod 就可以了在虚拟机上。

【讨论】:

【参考方案6】:

需要添加:Options +FollowSymLinks

<IfModule mod_rewrite.c> 
RewriteEngine on 
Options +FollowSymLinks
RewriteCond %REQUEST_FILENAME !-f 
RewriteCond %REQUEST_FILENAME !-d 
RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule>

【讨论】:

现在它只给我一个 500 错误:内部服务器错误服务器遇到内部错误或配置错误,无法完成您的请求。【参考方案7】:

您需要阅读安装文档:

http://laravel.com/docs/installation#configuration

注意这里的位:

Laravel requires one set of permissions to be configured - folders within app/storage require write access by the web server.

该文档中还有其他有用的内容,因此请务必阅读所有内容。

【讨论】:

【参考方案8】:

我遇到了同样的问题,我是这样解决的: 在您的 httpd-vhosts.conf 文件中,您需要将配置添加到您的文件夹中,这就是我所拥有的

<VirtualHost *:80>
    ServerAdmin your@mail.com
    DocumentRoot "/home/carlospublic_html"
    ServerName carlos.local
    <Directory "/home/carlos/public_html">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>>

【讨论】:

【参考方案9】:

服务器的 webroot 应该指向 Laravel 安装的 /public 文件夹。这是 index.html 文件从 Laravel 初始化的地方返回。

【讨论】:

【参考方案10】:

首先,this answer here 将帮助您获得权限。其次,您可能需要将 RewriteBase ~/carlo/public_html/laravel-develop 添加到您的 .htaccess 中,因为您是在主目录之外运行它。

【讨论】:

【参考方案11】:

嘿,我也遇到了这个错误,更改写权限似乎也不起作用。原来我需要更改 apache 的 httpd.conf 文件中的用户和组设置。这是一个很好的教程:Enable Write Permissions for the Native Built-In Apache in Mac OS X Lion

【讨论】:

【参考方案12】:

检查 LR4 的要求,您的本地服务器必须具有这些: PHP >= 5.3.7 MCrypt PHP 扩展

否则,将失败。我也面临这个问题,现在正在为我的 XAMPP 寻找更新的 PHP 及其扩展。

【讨论】:

【参考方案13】:

比起将权限更改为 777,我更喜欢这种方法。 让 Apache 像你一样运行。

    在终端输入id 以获取uid=123(Myname)

    打开 /etc/apache2/httpd.conf 并编辑它以使用您的用户名。

    <IfModule unixd_module>
       User Myname
       Group staff
    </IfModule>
    

    返回终端:sudo apachectl restart

【讨论】:

【参考方案14】:

几分钟前我遇到了这个问题,使用 sudo chmod -R 777 storage 似乎有助于使 storage/meta/services.json 可写。只是为了补充每个人一直在说的话。这对我有用。

【讨论】:

很高兴听到它成功了,达米。但是,如果其他答案对您有所帮助,则无需重复发布 - 只需投票!

以上是关于无法让 Laravel 4 在本地主机上工作的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.2 session flash 在本地主机上工作但在服务器上不工作?

laravel 中的护照详细信息 api 在本地主机上可以正常工作,但不能在共享主机上运行

Vue 组件显示在本地主机上,但不在使用 Laravel 5.4 的服务器上:Passport

.htaccess 无法使用 XAMPP 在本地主机上工作

不是本地主机上的有效域 facebook

准备好的语句在本地主机上工作,但不能在实时服务器上工作,无法获得输出 [重复]