Friday, June 2, 2017

程序员如何学习新的技术?

要学会学习,尤其是程序员

学习就是在不断地提高自己,然后不断的完善自己,让自己变的更强大,更加的完美!


作为一个程序员如何学习呢?

1  一手资料:
源代码,文档

2  二手资料
博客:一般是笼统的讲述 或者  是针对具体的问题的解决方案,快餐!
书籍: 一般技术都比较的老旧,适合比较深入的学习,写书需要很长的时间,所以,最好看一下算法和设计模式什么的,学习新的
技术,书上面是没有,就算有的话,书的延迟太高了。
视频: 学习效率最低的一种,因为太浪费时间了。所以,建议初学者使用看视频的方式。如果,你是刚入门的学习一种语言的话,可以使用这种方式!


以为,二手资料是别人的理解和认知,有的时候,技术和能力也是参差不齐的,如果作者的能力很强,我觉的会好很多,但是,如果作者的理解存在偏差的时候,比如:毛哥之前看中文的Android文档,但是,翻译出现了一个错过,所以他的理解就错了。我给他纠正了,但是,似乎并不服气,然后就没有然后了呢!以后,我不会在跟被人争论哪门语言更好,对我而言,我觉的合适的语言最好,自己用起来最舒服的语言就是最好的,我觉的世界上没有最好的语言,只有最合适的语言!所以讨论语言的话题,我拒绝回答!

看二手的资料存在的问题,就是太依靠作者的能力。

个人建议,最好是学习一手的资料,一手的资料的问题,就是难度大,很多的事情,需要自己去琢磨,这个说实在的挺不容易的饿。

到目前为止,我还没有怎么完整的看过文档呢,我一般都是用到的时候再去查看文档,因为,看完一整套的文档是挺麻烦的,一般是没有那么多的时间,现在,一般是用到什么的时候去学习什么,有好有坏。坏处就是没有什么准备,一切都是从头学习比较的困难,所以,有一些东西,需要弄清楚原理,然后自己去思索,学会解决问题的能力!







Thursday, June 1, 2017

nginx fastcgi sent in stderr: "primary script unknown"

今天,几乎是花了一天的时间来解决Centos6下面的Nginx和PHP-FPM不识别PHP的问题:

解决方案:针对Centos6, 其他的环境可以参考!

Thanks To:
https://serverfault.com/questions/406158/nginx-php5-fpm-file-not-found

https://serverfault.com/questions/517190/nginx-1-fastcgi-sent-in-stderr-primary-script-unknown


报错信息:
fastcgi sent in stderr: "primary script unknown"

详细信息:
2017/05/31 22:27:02 [error] 6142#0: *3 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: IP, server: avhades.com, request: "GET /utils/static/auth.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "avHades.com:19999” 


FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream,


网上很多人都说是Nginx配置的问题,但是,我按照他们的方式配置了,但是还是不行:
说的最多的可能就是:

$document_root
fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;


网上建议的配置信息:
    location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass    127.0.0.1:9000;
            fastcgi_index   index.php;
            fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include         fastcgi_params;
    }

我的配置信息:

server{
......

location ~ \.php$ {
    try_files $uri =404;
    #fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_pass    127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
         }

    ......

}

但是,我的问题不在这个配置文件,其实,文件的配置没有问题。

解决的灵感:
感谢这位小哥:

因为,我的代码路径的权限是 hades用户,然后,PHP-FPM默认的是 user = apache ;  group = apache; 这里的user 和 group 你需要修改成你的项目的路径的用户的名字(这里的权限,当然,你可以修改用户到一个组里面,这个如何处理有你决定)
下面是我的下修改:

找到PHP-FPM的配置文件:
Centos6

cd /etc/php-fpm.d
vim  www.conf


注意:
当你修改完之后,需要重启一下 PHP-FPM 和 Nginx

sudo service php-fpm restart
sudo service nginx restart


以上,已经基本解决完了,nginx  fastcgi sent in stderr: "primary script unknown" 这个问题了。 但是,涉及到权限。

当我,访问的PHP文件的时候。log日志出现了新的错误:
"/var/lib/nginx/tmp/fastcgi/1/00/0000000001" failed (13: Permission denied) while reading upstream



解决方案很简单:
只需要将 /var/lib/nginx/ 目录的用户的权限修改成你代码用户的权限,之前默认的权限是 nginx:nginx
 
我的修改的方式:
sudo chown hades:hades -R  /var/lib/nginx/ 


sudo service nginx restart 


OK , Now You can visit the php code!