无法使Laravel 4在localhost上运行

Car*_*rlo 32 php localhost laravel laravel-4

在阅读了Laravel4测试版的发布后,我第一次尝试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>
Run Code Online (Sandbox Code Playgroud)

我尝试访问公用文件夹时导致错误.错误:

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行

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

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

adr*_*dev 70

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

chmod -R 777 storage

有关此事的更多信息,请点击此处.

  • 这也适用于我...但为什么我不能设置存储组到www-data及其对775的权限? (2认同)

soc*_*man 16

您的错误是由于laravel无法写入app/storage文件夹而导致的.其余的只是堆栈跟踪.为了使存储文件夹可写,请cd到您的app文件夹,然后运行:

chmod -R 777 storage
Run Code Online (Sandbox Code Playgroud)


pin*_*ain 11

生产方式,对于不熟悉Unix的人来说比较复杂,但更安全:

  1. 进入超级用户模式(sudo -s或su).
  2. 创建组web(groupadd web)
  3. 将主要用户添加到组web(假设您的用户是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. 将项目根目录组所有者更改为web递归(chgrp -R web /path/to/project/root/)
  6. 授予群组递归写入权限(chmod -R g+w /path/to/project/root/
  7. (可选)要允许apache用户访问所有新创建的(或某些其他)用户文件和文件夹,请通过在项目根目录()上递归设置groupid位,使其接收与其父文件夹相同的组所有权chmod -R g+s /path/to/project/root/.

瞧!

快速而肮脏的方式,对于那些不关心安全性并希望让它不惜任何代价而不安全的人:

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


小智 5

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

'url' => 'http://localhost',
Run Code Online (Sandbox Code Playgroud)

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

'url' => 'http://mydomain.local',
Run Code Online (Sandbox Code Playgroud)

这似乎是解决问题的重要变化(我也按照此处的建议chmod了存储文件夹)

希望这有助于你们中的一些人..


小智 2

您需要添加:选项+FollowSymLinks

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