我以前一直都是在win下面写php代码的,但是很多次看到招聘信息招聘PHP程序员的时候都说到能在linux开发PHP,然后后来我自己也硬着头皮转到linux(centos)下开发PHP。 说一下深刻的体会、感受,希望大家能够评价一下。
1)linux安装开发环境不方便 win下面直接用集成开发包安装非常方便 ampp环境全部都有了。而且可以直接方便的开启扩展,非常方便。 在linux下面必须手动编译,安装apr apr-util pcre apache php libxml2 mysql…… 而且安装好了php,还得配置php.ini my.cnf httpd.conf,而且修改了之后还并不会生效,很奇怪的现象。 php.ini 在/etc/php.ini里面有,但是在/usr/local/php5/lib/php.ini又有一个,而且我开启Apache虚拟目录vhosts,如果把目录放到/home/username/www下面就没有访问权限,但是放到/var/www/下面却又可以访问。
然后我安装drupal,发现又要zlib扩展,我去重新编译PHP。在PHP-5.5.13的ext目录里面有zlib 文件夹,编译的时候--with-zlib,可怎么都没有安装上去。 而且我发现我把所有的PHP的文件包括目录都删除了,重启httpd,居然还是可以打开phpinfo.php,很奇怪。 mysql的配置也不好配置,我在win7下面用wamp,直接修改my.ini就可以搬迁到任意目录,但是在linux里面还有权限方面的,很多。反正在linux下配置lamp环境真的很麻烦,最快也得一个上午,因为编译安装PHP,make test这里有将近1万多项目,make install又非常久。 再加上配置mysql 、Apache(开vhosts)还不一定能够成功,权限问题、目录分配问题。
2)对在win下开发PHP的忧虑 我之所以会一直纠结是不是该去linux开发PHP,主要的几个因素是:第一我有一两次去面试PHP程序员,但是看到对方程序员是在linux下开发PHP的;第二是PHP 5.6.x版本,他们不再发行WIN下面的版本了;第三是我最近在看symfony,但是发现他们是composer安装的,而官网的提示操作都是在linux下面完成的。所以我心里想法就是是不是以后PHP不能在win下面开发了,是不是国外的PHP程序员都是在linux下开发PHP的。
3)在linux下开发网站的缺点、问题 我也仔细想过一些问题,现在这个时代,网站很讲究美观UI体验,做一个网站如果仅仅有PHP程序员真的是不可能完成的,必须和美工设计人员一起配合完成。如果在linux下开发PHP网站,那么美工经常传图片素材过来,那么怎么弄?美工负责的是设计,现在国内的公司做网站美工传递东西图片都是通过QQ的,非常方便,快速。如果转到linux下开发,那会怎么样传递?先从VM的win7中QQ接收再自己从WIN7 的FTP客户端上传到linux的网站目录中,再切换到linux中去使用图片资源?
4)说到最后,我认为的PHP和其他软件程序JAVA C++的本质区别 我做PHP已经有很多年了,一直总是感觉PHP总是被其他软件程序语言,比如JAVA C++所干扰。很武断的认为PHP就应该和C++ JAVA那样,但是我总是一种感觉他们本质区别,C++ JAVA似乎很要求协同,且美工方面参与的比较少或者来说可能没有不存在美工设计人员的参与,因为软件方面对界面没有什么要求,要求的是运行和业务逻辑。但是做网站,大部分都是做文章内容方面,CMS足以满足,然后静态化生成,程序方面的要求是次要的,美工方面的参与非常多,这样的话,根本就不能像C++ JAVA那些语言那样独立出来开发,必须更美工很强烈的配合(因为大部分公司美工不懂HTML CSS JS)。而且做网站php程序员,其实你还是要用到PS、DW切图这些软件,而这些软件linux根本就不支持。所以我一直非常纠结这个问题,一方面实际需要中PHP根本就不像C++ JAVA那些程序那样有什么团队之类的,大部分公司都是最多只有一个PHP程序员。另外一方面很多地方又说PHP必须在linux下开发,可我自己实际几次转到linux下开发PHP觉得真的很麻烦,不方便,不灵活。
写了这些希望能够得到大家的点评、看法、见解。
2015-8-12 补充:
再次回到这个问题,其实现在更倾向于使用 *nix下做开发,而并非 win下做开发。
首先要分清楚“开发时用的操作系统”和“开发环境的操作系统”的区别。前者是你运行IDE,编辑器,查邮件,和团队沟通时使用的操作系统,而后者是你开发过程中运行代码用的操作系统,我的观点是后者一定不能是windows,而前者随意。 两者可以是同一个linux,可以是一台windows或mac,另一台里面的linux虚拟机,也可以是两台物理机器都ok,放弃使用windows作为开发环境是很对的,但这不意味着你就必须得用linux桌面。
另外关于编译的吐槽,如果你开发的系统对php的版本、模块并不特别挑剔的话,几乎所有发行版都有编译好的php二进制包。当然,学会自己编译更好,所谓的“Linux基本功”其实不外乎文件/文本操作和源码编译/安装两大块。比起微软的那套东西,linux下可能你上手装第一台机器要半天,但熟练以后装100台机器也就只要半天。windows你上手可能只要一小时,但装100台机器一周都不一定能搞定,还要给微软缴100份授权,呵呵