GOD_Nt

2231 经验值

直接在关联的后面加with('childrens') childrens是你的子关联函数

这是我的操作逻辑;

我在判断还有剩余红包后(cache_remain_size>0),马上进行了cache_remain_size--;操作,
会出现以下问题:
A用户获取cache_remain_size = 1,之后进行cache_remain_size--;cache_remain_size就变为0;
B用户获取cache_remain_size = 0,就不可领去红包。但是如果A用户之后领取红包失败,cache_remain_size++;cache_remain_size又变为1,说明红包还有剩余。。。这个就有些矛盾了。如何解决?或者有其他更好的解决方案吗?

卧槽我终于弄好了。第一次clone的时候我使用了
sudo -Hu www git clone ...
项目根目录(your-project-folder)权限为 www:www,
但是项目里的所有文件都是root:root
再执行一次chown -R www:root your-project-folder
这样就不会报:
error: unable to unlink old 'routes/api.php' (Permission denied),
还有最开始的这个问题:
error: cannot open .git/FETCH_HEAD: Permission denied
是由于php-fpm的执行用户没有设置对(刚开始为nobody:nobody)要设置为(www:www)

我使用了。。。
现在我遇到了新问题
就是我的hook.php执行git pull命令(或者sudo -Hu www git pull)的时候会报:

[[email protected] ~]# tail /var/www/hooks/log.txt 
From https://git.oschina.net/fnf_1993/morning_night
   66284f2..8e305f9  dev        -> origin/dev
error: unable to unlink old 'routes/api.php' (Permission denied)

我在ssh窗口执行git pull时,是可以正常更新的,但是执行sudo -Hu www git pull也报上面的问题。
当我把项目内所有文件所有者都改为www时就可以执行了,但是这个时候服务器端的程序就也修改了,hook.php就需要执行:

git add .
git commit -m "server"
git pull

导致本地文件提交前也需要更新(服务器端修改了所有项目文件的用户权限)
不知道你能理解我的意思吗。
。。。我真的不知道该咋办了

发现错误信息了

error: cannot open .git/FETCH_HEAD: Permission denied
*28390 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 49.76.220.4, server: hook.fengningfei.com, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "hook.fengningfei.com", referrer: "http://hook.fengningfei.com/mn.php"

nginx的错误日志报这个。还需要看其他什么日志吗

这样也试了还是不行,目录倒是切换了,但是后面的检出没有执行

码云端已配置完成,hook.php 程序为
系统为centos 7,php版本7.0.6

<?php
        error_reporting(1);
        date_default_timezone_set('PRC');

        $target = '/var/www/mn'; // 生产环境web目录

        $password = 'morning_night';

        $json = json_decode(file_get_contents('php://input'), true);
        //if($json['password'] !== $password){
           // exit('error request!'.date('Y-m-d H:i:s'));
        //}

        $cmd = "sudo -Hu www cd $target && git pull";

        shell_exec($cmd);

        echo date('Y-m-d H:i:s')."success";

请求 URL 也已经有输出success,但是最后发现sudo -Hu www cd $target并没有起作用(没有切换到对应目录),然后在ssh界面使用命令sudo -Hu www cd /var,文件夹也并没有切换,这是为啥啊0 0

5.3 之后的 passport 好像不支持多表(就是多个用户系统同时使用 passport),那对于多用户前后端完全分离的系统有什么好的处理方式吗?