首先,我们再做调试的时候,请先开启php显示缺点,以便做调试

vim /usr/local/php/etc/php.ini

修正

phpcgisockfailedLaravel项目安排到线上须要留意的问题 Docker

display_errors = Off

改为

display_errors = On

改完后记得要重启做事器。

1 目录权限问题

为了运行 Laravel,我们须要为一些项目目录配置权限.

Laravel 项目须要对目录 storage/, bootstrap/cache, 授予读写权限

//授予三个目录读写权限chmod -R 777 bootstrap/chmod -R 777 storage/

如果你用的是一键安装包lnmp,请把稳,LNMP 一键安装包中含有.user.ini,权限会被谢绝。

需利用:

chattr -i /{目录}/.user.ini

并删除:

rm .user.ini

2 Nginx的配置文件的问题

假设你的nginx.conf文件的路径是放在这里:/usr/local/nginx/conf/nginx.conf文件,找到 server{}字段中

如下代码

#include enable-php.conf;

你的nginx里存不存在这个文件,请注释,由于这个会导致500缺点。
缘故原由是:

引入了 php 配置,个中有句 try_files 开启就有报错.

#新增 支持laravel 优雅链接,在laravel 文档里有解释

location / {

try_files $uri $uri/ /index.php?$query_string;}#新增 支持php 的配置

location ~ \.php$ {#不能有下面这句 try_files ,不然报错500# try_files $uri /index.php =404;fastcgi_split_path_info ^(.+\.php)(/.+)$;#这句把稳 后面是.sock 不是127.0.0..1fastcgi_pass unix:/tmp/php-cgi.sock;fastcgi_index index.php;include fastcgi_params;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;}

附件:给一个laravel的nginx配置

server{

listen 80;

server_name 网站域名;

index index.php index.html index.htm default.html default.htm default.php;

root /var/www/html/act/public; //网站存放目录,laravel的入口文件在public里

#include rewrite/none.conf;

#error_page 404 /404.html;

# Deny access to PHP files in specific directory

#location ~ /(wp-content|uploads|wp-includes|images)/.\.php$ { deny all; }

#include enable-php-pathinfo.conf;

#添加以下这句就好了

location / {

try_files $uri $uri/ /index.php?$query_string;

}

error_page 404 /404.html;

location = /40x.html {

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

}

location ~ \.php$ {

root /var/www/html/act/public;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}# if (!-e $request_filename){# rewrite ^/(mo_bile|admin|physician|home|seller)/(.)$ /$1/index.php?$2;# }

location ~ \.php$ {

fastcgi_param PATH_INFO $request_uri;

}

access_log /home/wwwlogs/hd.log;}

3 PHP扩展要记得开启

支配项目之前要先确保php.ini里的扩展已经开启,开启的扩展有:php_fileinfo, php_mbstring, php_openssl,这几个都是laravel须要的。

不管是修正了nginx还是php.ini,修正完后,请记得要重启nginx与php-fpm。

4 laravel项目在git上clone到线上可能会短缺一下核心库,开启php缺点显示会看到类似以下的问题

Warning: require(): open_basedir restriction in effect. File(/home/wwwroot//bootstrap/autoload.php) is not within the allowed path(s): (/home/wwwroot//public/:/tmp/:/proc/) in /home/wwwroot//public/index.php on line 22Warning: require(/home/wwwroot//bootstrap/autoload.php): failed to open stream: Operation

not permitted in /home/wwwroot//public/index.php on line 22Fatal error: require(): Failed opening required

'/home/wwwroot//public/../bootstrap/autoload.php' (include_path='.:/usr/local/php/lib/php') in /home/wwwroot//public/index.php on line 22

此时你须要composer 更新第三方 vendor 组件

在项目目录下实行composer update,请自行更新composer到最新版本。

如果在更新中出错,请网上查找相应的composer缺点,这个很好办理的。

5 laravel从git上clone到线上目录涌现app_key的缺点的话的,请在.env文件里加app_key。

//天生key,在项目根目录下实行命令来获取laravel项目app_key

php artisan key:generate

//或者可以修正配置文件.env中的APP_KEY参数

APP_KEY=base64:akjIOLlieujKw0yEUbwjJdP5lPWHkk3uw39CnAhfdasfsaddfggghssda+

6 laravel上传到线上涌现The cipher and / or key length are invalid 的

这个问题很多都是读取.env的时候为null造成的。

首先你该当检讨config的app.php里是否有存在key与cipher的配置

'key' => env('APP_KEY'),

'cipher' => 'AES-256-CBC',

有存在也要查找.env里是否有app_key。
有存在的话,请操作:

php artisan config:cache

由于是env失落效,以是接下来你要做的是打消缓存,重新来过,主要的一步便是要重新启动nginx,php-fpm

7 Laravel 中 seeder 实行失落败

当第一次实行完 php artisan db:seed 后,增加新的 seeder 文件时实行会报错。
缺点信息如下 [ReflectionException] Class TableSeeder does not exist

确保新的 seeder 文件和全局 database seeder 是在同一个 seeder 目录下了,仍旧会涌现这个问题的缘故原由是: 我们须要清理下之前实行天生的 classmap 信息。

在掌握台中实行 composer dump-autoload,然后再实行 php artisan db:seed

支配到线上的常常会涌现的,我碰着的就这么些问题,大概你会碰着更多的问题,或许你不会碰着问题。
或许上面我碰着的问题能给予你一些帮助吧!