No se puede hacer que Laravel 4 funcione en el host local

Estoy probando a Laravel por primera vez después de leer un anuncio de la versión beta de Laravel4.

Seguí estos pasos . Instalé Composer y Laravel con todas las dependencias que necesitaba. Puse el laravel dentro de mi ~/public_html directorio – como estoy acostumbrado a hacerlo con Codeigniter, pero creo que algo está mal aquí.

Si http://localhost/~carlo/laravel-develop/ el navegador a http://localhost/~carlo/laravel-develop/ , solo muestra el contenido del directorio.

Luego, mientras que en el sistema de archivos tenía una laravel-develop/public , no apareció en el navegador.

Descubrí que cambiar el .htaccess esta manera:

  RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]  

produjo un error cuando bash acceder a la carpeta pública. El error:

ErrorException: Advertencia: file_put_contents (/ home / carlo / public_html / laravel-develop / app / config /../ storage / meta / services.json): error al abrir la transmisión: Permiso denegado en / home / carlo / public_html / laravel- develop / vendor / laravel / framework / src / Illuminate / Filesystem / Filesystem.php línea 77

otro:

/home/carlo/public_html/laravel-develop/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php línea 77

luego una larga lista de errores. El último es:

require_once (‘/ home / carlo / public_html / laravel-develop / start.php’) en /home/carlo/public_html/laravel-develop/public/index.php línea 53

Intente cambiar los permisos de la carpeta para la carpeta de storage usando la terminal:

chmod -R 777 storage

Más información sobre este asunto se puede encontrar aquí .

Sus errores se produjeron porque laravel no pudo escribir en la carpeta de aplicaciones / almacenamiento. El rest fue solo un rastro de stack. Para hacer que la carpeta de almacenamiento sea editable, cd en su carpeta de aplicaciones y luego ejecute:

 chmod -R 777 storage 

Modo de producción , complejidad moderada para personas que no están familiarizadas con Unix, pero más seguras :

  1. Vaya en modo superusuario (sudo -s o su).
  2. Crear un grupo web ( groupadd web )
  3. Agregue su usuario principal a la web grupo (supongamos que su usuario es cool_user , así que ejecute usermod -a -G web cool_user )
  4. Agregue php-fpm o usuario del servidor web (si php se usa como módulo SAPI) al grupo web (por ejemplo, en CentOS php-fpm utilice el nombre de usuario de apache , por lo que en la mayoría de los casos esto funcionará: usermod -a -G web apache )
  5. Cambie el propietario de su grupo de directorio raíz del proyecto a la web recursivamente ( chgrp -R web /path/to/project/root/ )
  6. Otorgar permiso de escritura recursivo para el grupo ( chmod -R g+w /path/to/project/root/
  7. Opcionalmente, permita que todos los archivos y carpetas creados recientemente por apache (u otros) sean accesibles desde su usuario, haga que reciban la propiedad del grupo igual que su carpeta principal estableciendo el bit groupid recursivamente en el directorio raíz de su proyecto ( chmod -R g+s /path/to/project/root/ ).

Voila !.

De manera rápida y sucia , para aquellos que no se preocupan por la seguridad y quieren que funcione a cualquier costo, no de forma segura :

  1. Vaya en modo superusuario (sudo -s o su).
  2. Otorgar permiso completo recursivamente (leer, escribir, ejecutar) para todos los usuarios ( chmod -R o=rwx /path/to/project/root/

En mi caso, resolví este error modificando en el archivo /app/config/app.php la configuración predeterminada:

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

a mi url localhost virtualhost personalizada:

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

Este parecía ser EL cambio esencial que resolvió el problema (también modifiqué la carpeta de almacenamiento, como se sugiere aquí)

Espero que esto ayude a alguno de ustedes..

Además, si está usando un entorno de tipo virtual / VM vagabundo, entonces en mi Mac necesitaba emitir el chmod en el sistema host (mac) pero en mi caja de Windows, estaba bien emitir el chmod directamente en la VM .

Necesita agregar: Opciones + FollowSymLinks

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

Necesita leer la documentación de instalación:

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

Presta atención al bit aquí:

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

También hay otras cosas que son útiles en ese documento, así que asegúrese de leerlo todo.

Tuve el mismo problema, así es como lo resuelvo: en tus archivos httpd-vhosts.conf necesitas agregar las configuraciones a tus carpetas, esto es lo que tengo en el mío

  ServerAdmin [email protected] DocumentRoot "/home/carlospublic_html" ServerName carlos.local  Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all  > 

Oye, también recibí este error y cambiar los permisos de escritura tampoco funcionaba. Resultó que necesitaba cambiar las configuraciones de Usuario y Grupo en el archivo httpd.conf de apache. Aquí hay un buen tutorial: habilite permisos de escritura para el Apache nativo incorporado en Mac OS X Lion

El webroot de su servidor debe apuntar a la carpeta /public de su instalación de Laravel. Aquí es donde el archivo index.html recita desde donde se inicializó Laravel.

Primero, esta respuesta aquí te ayudará con los permisos. En segundo lugar, es posible que necesite agregar RewriteBase ~/carlo/public_html/laravel-develop a su .htaccess, ya que lo está ejecutando fuera de un directorio de inicio.

Verificando el Requisito para el LR4, su servidor local debe tener estos: PHP> = 5.3.7 Extensión MCrypt PHP

De lo contrario, fallará. Me enfrento a este problema también y ahora estoy buscando un PHP actualizado y su extensión para mi XAMPP.

Me gusta más este método que cambiar los permisos a 777. Configure Apache para que se ejecute como usted.

  1. En terminal id tipo para obtener uid=123(Myname) .

  2. Abra /etc/apache2/httpd.conf y edítelo para usar su nombre de usuario.

      User Myname Group staff  
  3. Volver al terminal: sudo apachectl restart

Me encontré con este problema hace unos minutos y el uso de sudo chmod -R 777 almacenamiento pareció ayudar a que el almacenamiento / meta / services.json se pueda escribir. Solo para agregar a lo que todos han estado diciendo. Esto funcionó para mí.