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

在阅读Laravel4testing版发布之后,我第一次尝试了Laravel。

我遵循了这些步骤,我安装了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:Warning:file_put_contents(/ home / carlo / public_html / laravel-develop / app / config /../ storage / meta / services.json):未能打开stream:/ 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行

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

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

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

chmod -R 777 storage

关于这个问题的更多信息可以在这里find。

由于laravel无法写入应用程序/存储文件夹,导致您的错误。 其余的只是一个堆栈跟踪。 为了使存储文件夹可写,cd进入你的应用程序文件夹,然后运行:

 chmod -R 777 storage 

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

  1. 进入超级用户模式(sudo -s或su)。
  2. 创buildgroupadd webgroupadd web
  3. 添加你的主要用户到cool_user (假设你的用户是cool_user ,所以运行usermod -a -G web cool_user
  4. 将php-fpm或web服务器用户(如果php用作SAPI模块)添加到web组(例如,在CentOS上,php-fpm使用apache用户名,所以在大多数情况下这将工作: usermod -a -G web apache
  5. 将您的项目根目录组所有者更改为webchgrp -R web /path/to/project/root/
  6. Grantrecursion地写组权限( chmod -R g+w /path/to/project/root/
  7. (可选)为了允许所有新创build的apache (或其他)用户文件和文件夹都可以从您的用户访问,请通过在您的项目根目录( chmod -R g+s /path/to/project/root/上recursion设置groupid位,使它们接收与其父文件夹相同的组所有权chmod -R g+s /path/to/project/root/ )。

瞧!

快速和肮脏的方式 ,对于那些不关心安全性,并希望使它在任何成本的工作, 不安全

  1. 进入超级用户模式(sudo -s或su)。
  2. 授予所有用户recursion的完整权限(读取,写入,执行)( chmod -R o=rwx /path/to/project/root/

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

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

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

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

这似乎是解决问题的重要变化(我也chmod了存储文件夹,如这里所build议的)

希望这有助于你们一些..

进一步来说,如果你使用的是virtualbox / vagrant虚拟机types的环境,那么在我的Mac上,我需要在主机(mac)系统上发出chmod,但是在我的Windows机器上,直接在虚拟机上发出chmod 。

您需要添加:选项+ FollowSymLinks

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

您需要阅读安装文档:

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. 

还有其他的东西在那个文件中很有用,所以一定要把它全部读完。

我有同样的问题,这是我如何解决它:在您的httpd-vhosts.conf文件中,您需要将configuration添加到您的文件夹,这是我在我的

 <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>> 

嘿,我也得到这个错误,改变写权限似乎也没有工作。 原来,我需要更改Apache的httpd.conf文件中的用户和组设置。 下面是一个很好的教程: 在Mac OS X Lion中为本地内置的Apache启用写权限

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

首先, 这里的答案将帮助您获得权限。 其次,您可能需要将RewriteBase ~/carlo/public_html/laravel-develop到.htaccess中,因为您正在主目录中运行它。

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

否则,会失败。 我也面临这个麻烦,现在正在寻找一个更新的PHP及其扩展名为我的XAMPP。

我喜欢这个方法比改变权限到777更好。设置Apache以像你一样运行。

  1. 在terminaltypesid获取uid=123(Myname)

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

     <IfModule unixd_module> User Myname Group staff </IfModule> 
  3. 回到terminal: sudo apachectl restart

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