无法使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不熟悉,但更安全 :
- 进入超级用户模式(sudo -s或su)。
- 创build
groupadd web
(groupadd web
) - 添加你的主要用户到
cool_user
(假设你的用户是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/
) - Grantrecursion地写组权限(
chmod -R g+w /path/to/project/root/
- (可选)为了允许所有新创build的
apache
(或其他)用户文件和文件夹都可以从您的用户访问,请通过在您的项目根目录(chmod -R g+s /path/to/project/root/
上recursion设置groupid位,使它们接收与其父文件夹相同的组所有权chmod -R g+s /path/to/project/root/
)。
瞧!
快速和肮脏的方式 ,对于那些不关心安全性,并希望使它在任何成本的工作, 不安全 :
- 进入超级用户模式(sudo -s或su)。
- 授予所有用户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以像你一样运行。
-
在terminaltypes
id
获取uid=123(Myname)
。 -
打开/etc/apache2/httpd.conf并编辑它以使用您的用户名。
<IfModule unixd_module> User Myname Group staff </IfModule>
-
回到terminal:
sudo apachectl restart
几分钟前我遇到了这个问题,使用sudo chmod -R 777存储似乎有助于使storage / meta / services.json可写。 只是为了增加大家一直在说的话。 这对我有效。