目录权限设置,laravel项目部署在linux上

2019-10-02 09:34栏目:网络时代
TAG:

前置条件

前置条件

centos安装composer

增加mcrypt

增加mcrypt

wget -O /usr/local/bin/composer

如果想偷懒ubuntu用户直接 apt-get install php5-mcrypt,发现还是不能用,修改/usr/local/php/lib/php.ini(每个人有差异,同时cli模式下也需要增加)增加下面内容

先运行:find / -name mcrypt   找到mcrypt的路径(一般在你的php安装包里面的ext里面)。

chmod a+x/usr/local/bin/composer

extension=mcrypt.so

[root@fredfred879 htdocs]# find / -name mcrypt
/root/soft/php-5.6.30/ext/mcrypt

安装laravel

如果你想自己编译安装,可以参考下文的openssl安装方法。

然后进入这个目录(下面是进入目录的命令,你要写你自己的目录路径)

composer create-project --prefer-dist laravel/laravel blog "5.4.*"

增加openssl的配置

[root@fredfred879 htdocs]# cd /root/soft/php-5.6.30/ext/mcrypt
[root@fredfred879 mcrypt]# ls
config.m4  config.w32  CREDITS  mcrypt.c  mcrypt.dsp  mcrypt_filter.c  php_mcrypt_filter.h  php_mcrypt.h  tests  TODO

chmod -R 777 /home/www/IVT/storage/

我是从之前的PHP源码编译安装的。因为我之前的PHP源码还在的。

然后运行:/usr/local/php5/bin/phpize   这是一个可执行的文本文件,要确保它在系统中。会发现当前目录下多了一些configure文件。

1.laravel 不支持原生session

cd ~/php-5.5.16/ext/openssl
 
/usr/local/php/bin/phpize
Cannot find config.m4.
Make sure that you run '/usr/local/php/bin/phpize' in the top level source directory of the module
 
mv config0.m4 config.m4
 
./configure --with-openssl --with-php-config=/usr/local/php/bin/php-config
 
make && make install

[root@fredfred879 mcrypt]# /usr/local/php5/bin/phpize
Configuring for:
PHP Api Version:         20131106
Zend Module Api No:      20131226
Zend Extension Api No:   220131226
[root@fredfred879 mcrypt]#
运行完,显示的结果应该就是上面的那三行,如果多了几行那就是有错误。原因应该是有些东西没安装。解决方式在我其他的博客中,你可以在我其他的博客中找一下。(如果我写了的话)。

因为session被laravel重新封装了

进入到/usr/local/php/lib/php.ini增加

然后运行:[root@fredfred879 mcrypt]# ./configure --with-php-config=/usr/local/php5/bin/php-config

想使用原生的session服务必须在入口文件开启session_start()

 

然后运行:[root@fredfred879 mcrypt]# make && make install
然后在运行:[root@fredfred879 mcrypt]# vi /usr/local/php5/etc/php.ini  进入配置文件添加extension="/usr/local/php5/lib/php/extensions/no-debug-zts-20131226/mcrypt.so"(要根据你自己的路径决定)

2.我们通过 Composer 安装Captcha扩展包

extension=openssl.so

;extension=php_gmp.dll
;extension=php_intl.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_exif.dll      ; Must be after mbstring as it depends on it
;extension=php_mysql.dll
;extension=php_mysqli.dll
;extension=php_oci8_12c.dll  ; Use with Oracle Database 12c Instant Client
;extension=php_openssl.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_shmop.dll
extension="/usr/local/php5/lib/php/extensions/no-debug-zts-20131226/mcrypt.so"

eg:(1)使用Captcha服务提供者之前还需要在config/app.php中注册服务提供者:

重启php-fpm。

然后保存退出。(如果没有php.ini这个文件的同学,可以找找我其他的文章来解决,如果我写了的话!)

(2)'providers' => [MewsCaptchaCaptchaServiceProvider::class,]

安装

然后就ok了

同时注册下相应门面:

自己动手,丰衣足食版

增加openssl的配置

我是从之前的PHP源码编译安装的。因为我之前的PHP源码还在的。

01
02
03
04
05
06
07
08
09
10
11
 cd /root/soft/php-5.6.30/ext/openssl
 
/usr/local/php/bin/phpize
Cannot find config.m4.
Make sure that you run '/usr/local/php/bin/phpize' in the top level source directory of the module
 
mv config0.m4 config.m4
  
./configure --with-openssl --with-php-config=/usr/local/php/bin/php-config
 
make && make install

进入到/usr/local/php/etc/php.ini增加

1
extension=openssl.so

如果extension=openssl.so不行就按上面那样把路径写全。至于这是什么原因会导致有些要写全有些不用写全,你可以在我的博客里找找看,如果我写了的话!

 

 

'aliases' => ['Captcha' => MewsCaptchaFacadesCaptcha::class,]

先安装composer,参考官方文档
然后下载laravel的最新版,解压缩。
进入到目录下方compuser install
这个会让你的文件目录下多vendor。
懒人版

为目录设置正确的写权限

 

/app/storage这个目录是laravel的一些写文件的目录,会写log、session、页面缓存等数据,所以要对这个目录设置正确的权限。

 

如果你为了方便设置chmod +777 app/storage也是可以的。但是我还是不推荐。

 

我推荐将目录的权限设置为会写文件的用户名和用户组。

 

1
2
3
4
5
6
chmod -R 777 app/storage
#访问一下网页,看看是否有输出。
#进入到/app/storage/session的文件组是谁?我的是nobody
#这个是php的用户组,我的apache也是这个组
chmod -R 775 app/storage
chown -R :nobody app/storage

 

然后就能访问了。

 

如果要使用自定义的配置,还可以发布配置文件到config目录:

下载一个完整的laravel,然后解压缩就能用,不用为laravel安装组件。

$ php artisan vendor:publish

这个的缺点就是你要更新你的laravel,会依赖于其他人更新。

编辑新生成的captcha.php:

我的方法

3.laravel中TokenMismatchException异常处理

我是在自己的本地安装了一个composer,然后自己去下载最新的laravel组件,最后把整个包压缩上传到服务器去。不过这样更新生产环境的laravel会比较麻烦。不管了,一本开发了也不会对框架做太多的更新。

方法一:将token值传递过去

如果你迫不及待的访问url,会出现一些错误error in exception handler.。这个是因为写缓存、日志目录的没有写权限

4.表单提交时:

为目录设置正确的写权限

<form>{!!csrf_field()!!}</form>

/app/storage这个目录是laravel的一些写文件的目录,会写log、session、页面缓存等数据,所以要对这个目录设置正确的权限。

使用AJAX请求时:

headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')

5.阿里云  短信 发送要求

date_default_timezone_set('PRC'); //设置中国时区

ini_set('date.timezone','Asia/Shanghai');

header("Content-type:text/html;charset=utf-8");


artisan命令        php artisan make:controller ApiController       新建Api 控制器

查看数据库信息      $pdo=DB::connection()->getPdo();

dd($pdo);

Request::getContent()  获取(stream 数据流)

如果你为了方便设置chmod +777 app/storage也是可以的。但是我还是不推荐。

我推荐将目录的权限设置为会写文件的用户名和用户组。

chmod -R 777 app/storage
#访问一下网页,看看是否有输出。
#进入到/app/storage/session的文件组是谁?我的是nobody
#这个是php的用户组,我的nginx也是这个组
chmod -R 775 app/storage
chown -R :nobody app/storage
然后配置nginx就能访问了。

更改成debug模式,查看错误信息

有时候会出现问题,有不知道具体的信息,所以需要打开laravel的debug模式,可能查看更多的输出。

进入到laravel项目的/app/config/app.php

//把配置中的debug的false改成true
'debug' => true

版权声明:本文由澳门新葡亰平台游戏发布于网络时代,转载请注明出处:目录权限设置,laravel项目部署在linux上