PHP – 骨头鱼的墓 http://gonefish.info Changing Anytime Sun, 27 Mar 2016 14:52:09 +0000 zh-CN hourly 1 https://wordpress.org/?v=4.6.1 不折腾之搭建Mac上的PHP开发环境 http://gonefish.info/2010/08/%e4%b8%8d%e6%8a%98%e8%85%be%e4%b9%8b%e6%90%ad%e5%bb%bamac%e4%b8%8a%e7%9a%84php%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83/ Sat, 28 Aug 2010 13:39:37 +0000 http://gonefish.info/blog/?p=659 继续阅读“不折腾之搭建Mac上的PHP开发环境”]]> 在最开始使用MacBook的时候写过一篇使用macport架设PHP开发环境的文章,但我现在已经不想在折腾这种事情了,我想这是一些对于认识的进化吧。

在最初开始学习PHP的时候,一个集成环境是多么的方便,在不理解Apache,PHP,MySQL之间的关系的时候,可以让初学者失去学习的兴趣,而PHP是一种Web语言,很少独立使用。当已经入门后,开始想搞明白开发环境,所以会选择自行搭建一个,从中也可以了解其中的一些关系。就这样开始折腾不同的安装方法与配置参数,并以此为乐趣。当对这些原理后,渐渐的失去了不断折腾的兴趣,更希望一种集成环境来简化一些工作,并且自己也可以非常灵活的设置相关配置参数。(其实这跟重装系统是一样的,想当年就经常重装系统,结果到后来,1年不重装系统是多么正常。)

在Mac系统下,集成环境不像Win那么多,XAMPP的设置非常不爽,整个目录是/Applications下面。还好Zend官方提供了Zend Server Community Edition产品,于是使用了一下,还不错,Apache,PHP,MySQL,phpMyAdmin这些基本的都有了,但还是有些东西需要调整。

下载好DMG后,直接安装,Zend Controller直接拖到应用目录就行了。所有的东西被安装到了/usr/local/zend 目录下面去了。/usr/local/zend/bin/zendctl.sh 这个脚本是管理服务脚本。Zend Server Community Edition产品自带一个管理界面,这个Web应用是使用lighttpd做为服务器,所以如果需要使用Web管理应用需要启动lighttpd服务器。注意:默认的Apache的端口不是80,所以可以自动调整一下。/usr/local/zend/apache2/htdocs的目录用户权限级是staff,所以在这个目录创建文件不需要管理员权限。

phpmyadmin也是由lighttpd提供服务的,而且默认配置只能使用127.0.0.1来进行访问。编辑/usr/local/zend/gui/lighttpd/etc/lighttpd.conf文件,搜索phpmyadmin,修改成url.access-deny = ( “localhost” )。然后重启lighttpd,可以使用上面的脚本。

MySQL的root用户没有密码。不过有一个问题默认的MySQL没有使用端口监听的方式运行,而是使用Unix的socket通信的。我试着修改/usr/local/zend/mysql/data/my.cnf 但总是不成功。

另外还集成了Zend Framework和Zend Debug这些有用的东西。

]]>
Mac OS X 10.6下简单搭建Lighttpd+PHP+MySQL环境 http://gonefish.info/2009/12/mac-os-x-10-6%e4%b8%8b%e7%ae%80%e5%8d%95%e6%90%ad%e5%bb%balighttpdphpmysql%e7%8e%af%e5%a2%83/ http://gonefish.info/2009/12/mac-os-x-10-6%e4%b8%8b%e7%ae%80%e5%8d%95%e6%90%ad%e5%bb%balighttpdphpmysql%e7%8e%af%e5%a2%83/#comments Tue, 22 Dec 2009 05:10:39 +0000 http://gonefish.cn/?p=521 继续阅读“Mac OS X 10.6下简单搭建Lighttpd+PHP+MySQL环境”]]> 其实这类文章网上已经比较多了,不过现在最新的版本是10.6,所以重新整理一下。并且尽量使用官方提供的安装包。

虽然在Mac OS X 10.6中是自带Apache,但没有mod_php5,所以没法简单的开启php的支持。不过在Mac OS X 10.5中是自带mod_php的。如果在Mac OS X下做开发,MacPorts是必不可少的东西,这是一款包管理软件。当然,还是有其它的包管理系统FinkHomebrew这些选择,不过今天的重点是如何快速的搭建Lighttpd+PHP+MySQL环境。

首先,需要安装MacPorts,在安装之前,必须先安装Xcode Tools,在安装选项确保已经选中命令行开发。一般买Mac的时候,会附赠两张光盘:系统盘和开发工具盘,你可以在开发工具盘里找到Xcode Tools,或者去Apple官方网站去下载最新的Xcode Tools。

在MacPorts的官方下载页面选择你的Mac OS X版本,最新的版本是1.8,下载好镜像运行安装程序即可。在安装过程中会进行源码树同步,所以不必在安装完成后执行sudo port -v selfupdate。

安装lighttpd非常简单,只需要执行:
sudo port install lighttpd

等安装完毕后,按提示执行:
sudo launchctl load -w /Library/LaunchDaemons/org.macports.lighttpd.plist

运行之后每次开机会自动启动lighttpd,之后你需要创建一个默认的配置文件,不过已经有一个样例文件
cd /opt/local/etc/lighttpd/
cp lighttpd.conf.default lighttpd.conf

在lighttpd.conf的配置文件中,取消mod_fastcgi前面注释,以启用fastcgi的支持。接着搜索fastcgi.server,取消该配置项前面的注释。类似于下面
fastcgi.server = ( “.php” =>
( “localhost” =>
(
“socket” => “/opt/local/var/run/lighttpd/php-fastcgi.socket”,
“bin-path” => “/opt/local/bin/php-cgi”,
“max-procs” => 1,
“bin-environment” => (
“PHP_FCGI_CHILDREN” => “1”
),
)
)
)
由于是在自己的开发机上,可以设定PHP_FCGI_CHILDREN为1,这样就只会产生一个php-cgi进程。

注意:请确保/opt/local/var/log/和/opt/local/var/run/这两个目录可写,通过以下命令修改权限,
sudo chmod 777 -R /opt/local/var/log/
sudo chmod 777 -R /opt/local/var/run/

现在开始安装MySQL,为了简单方便,我们直接从官方网站下载已经做好的镜像文件,在安装镜像文件中,自带了系统偏好设置项,安装之后可以通过系统偏好设置项来启动MySQL。

最后,安装PHP,需要注意在最新的MacPorts中有4个版本的PHP:php4、php5、php5-devel、php52,其中php5是最新的PHP 5.3,其它的一些库的只支持这个版本的,所以这里我就安装php5这个版本。至少php 5.3和php 5.2的区别可以去查看一下文档。由于使用fastcgi运行,所以在安装php5的时候加上fastcgi这个参数,
sudo port install php5 + fastcgi

安装完成后,我们需要创建一个 php.ini文件
sudo cd /opt/local/etc/php5/
sudo cp php.ini-development php.ini

在php.ini文件中找到cgi.fix_pathinfo = 1这一行,取消前面的注释。

在PHP 5.3中有一点需要说明,MySQL的原生驱动已经在PHP的源码里面了,在原先的版本中PHP的MySQL扩展使用的是libmysql这个库,不过现在已经内置了一个性能更好的库。注意:这和mysql扩展不是一类东西,所以,在PHP中依然使用mysql、mysqli、pdo_mysql这三种扩展。要安装这三个扩展的支持也非常简单,
sudo port install php5-mysql

安装完成后,需要设定mysql的socket连接,修改php.ini文件中以下几项

pdo_mysql.default_socket=/tmp/mysql.sock
mysql.default_socket =/tmp/mysql.sock
mysqli.default_socket =/tmp/mysql.sock

这样一个简单的Lighttpd+PHP+MySQL环境就可以运行了。

]]>
http://gonefish.info/2009/12/mac-os-x-10-6%e4%b8%8b%e7%ae%80%e5%8d%95%e6%90%ad%e5%bb%balighttpdphpmysql%e7%8e%af%e5%a2%83/feed/ 2
在Mac OS X 10.6上安装PHPUnit http://gonefish.info/2009/12/%e5%9c%a8mac-os-x-10-6%e4%b8%8a%e5%ae%89%e8%a3%85phpunit/ Sun, 13 Dec 2009 04:19:23 +0000 http://gonefish.cn/?p=517 继续阅读“在Mac OS X 10.6上安装PHPUnit”]]> 在最新的Mac OS X 10.6中,默认自带一个CLI的PHP解释器和PEAR库,所以安装PHPUnit非常方便,但按PHPUnit的文档说明可能会出现安装不成功的问题,这是由于PEAR库比较旧,需要升级一下。打开终端执行:
sudo pear upgrade PEAR
然后再按PHPUnit文档中安装章节中的那样:
sudo pear channel-discover pear.phpunit.de
sudo pear install –alldeps phpunit/PHPUnit
完成之后就可以运行phpunit了。

]]>
最好的PHP开发工具Aptana PHP http://gonefish.info/2009/11/%e6%9c%80%e5%a5%bd%e7%9a%84php%e5%bc%80%e5%8f%91%e5%b7%a5%e5%85%b7aptana-php/ http://gonefish.info/2009/11/%e6%9c%80%e5%a5%bd%e7%9a%84php%e5%bc%80%e5%8f%91%e5%b7%a5%e5%85%b7aptana-php/#comments Sun, 29 Nov 2009 10:44:01 +0000 http://gonefish.cn/?p=336 继续阅读“最好的PHP开发工具Aptana PHP”]]> 关于PHP编辑器的文章已经很很多了,也许有些商业软件要这本文中提到的Aptana要好得多,这里我们只讨论商业软件(如果破解的话也是免费的)和免费软件。让我写这篇文章的目的是为了让更多的人使用更好的软件,但这里有个问题是Aptana2.0挡住真相。

Aptana最新的版本已经到了2.0,但我在查询发行声明时发现Aptana 2.0已经放弃了Aptana PHP插件的开发,在最新本中只支持PDT。关于PDT是个什么东西我非常清楚,就是因为有了Aptana PHP,我放弃了Zend Studio 6的破解版。而PDT只是Zend Studio 6的基础,Zend公司在这之上做了许多强化后,拿出来卖,如果你试用过两者,会发现在这两者完全是天壤之别。

如果你需要以下功能:

  • PHP的语法提示和错误检测。
  • PHP的函数和类名称提示(包括内建和自己开发)。
  • 函数和类的文件跳转。
  • 文件的大纲显示。
  • PHP的Debug(这个功能没有Zend Studio 6方便)。
  • 强大的搜索功能。
  • 集成版本控制客户端。
  • 其它…

如果你熟悉Eclipse平台的话,可以得到更多你想要的功能,因为Aptana也是基于Eclipse的。从Aptana  1.5开始,基于Eclipse 3.5,这个版本的Mac是Cocoa的,所以在Mac中的性能提升非常明显。

安装方法最重要的一点是要下载Aptana 1.5版,然后在插件安装界面中选择Aptana PHP,这是官方的下载Aptana Studio 1.5.1 and Aptana PHP的文档说明。提示:Pydev已经被这个公司收购了,所以Aptana也是支持Python开发的。

最后,我想是不是Aptana开发商发生了一些变动,导致放弃了Aptana PHP插件的开发,难道是某些外部的压力?不知道在PDT的后继版本中看能不能满足我的要求,等3.0了再来试试。

]]>
http://gonefish.info/2009/11/%e6%9c%80%e5%a5%bd%e7%9a%84php%e5%bc%80%e5%8f%91%e5%b7%a5%e5%85%b7aptana-php/feed/ 1
PHP模板引擎Shine http://gonefish.info/2009/06/php%e6%a8%a1%e6%9d%bf%e5%bc%95%e6%93%8eshine/ http://gonefish.info/2009/06/php%e6%a8%a1%e6%9d%bf%e5%bc%95%e6%93%8eshine/#comments Sun, 07 Jun 2009 03:28:38 +0000 http://gonefish.cn/weblog/php5-implement-django-template-engine/ 继续阅读“PHP模板引擎Shine”]]> Shine的开发工作终于达到了一个阶段,大部分实现了Django的模板系统,并在其中添加了一些额外的东西,剩下的工作是准备进行实际测试,准备在最近工作中应用,希望能够得到反馈,之后发布1.0版。

源码发布在:http://bitbucket.org/gonefish/shine

入门指南

]]>
http://gonefish.info/2009/06/php%e6%a8%a1%e6%9d%bf%e5%bc%95%e6%93%8eshine/feed/ 3
PHP会变成什么样 http://gonefish.info/2009/05/php%e4%bc%9a%e5%8f%98%e6%88%90%e4%bb%80%e4%b9%88%e6%a0%b7/ http://gonefish.info/2009/05/php%e4%bc%9a%e5%8f%98%e6%88%90%e4%bb%80%e4%b9%88%e6%a0%b7/#comments Tue, 12 May 2009 14:45:13 +0000 http://gonefish.cn/weblog/2009-5-12-2/ 继续阅读“PHP会变成什么样”]]> 现在是PHP 5.3.0这个版本已经RC2了,这个版本就是一个重要的过度版本,因为她带来了许多新的特性,这个版本和PHP6的区别仅仅在于unicode。在这个版本里有一个我很在意的东西,就是名字空间,如果使用名字空间就可以避免命名冲突的问题。

由于此前PHP一直没有命名空间,一直使用伪类名约定即类命名是对应于其所属文件的目录结构。通过这种方式来避免冲突,你是否发现,这种用法让PHP看起来更“OO”了,我是指到处都是Class了。而且,像现在官方也推出了ZF,一个完全PHP5的框架,但在理解了PHP的运行方式后,开始质疑PHP难道一样搞成这样复杂吗?

虽然PHP 5.3.0带来了命名空间,但那shit的语法实在是让人受不了,虽然ROR很火,所以ZF中很多东西都是借鉴于此,但有些东西就算借鉴,也感觉是坚加上去了,完全感受不到流畅的开发感觉。

在此前我已经移植了Django的模板系统,现在虽然已经移植完成,但文档还没有写完,已经拖了很长时间了,非常抱歉,如果有时间我会继承来完善一个适合于PHP的Web开发框架,当然首先是大家觉得这个Shine好用才行。

]]>
http://gonefish.info/2009/05/php%e4%bc%9a%e5%8f%98%e6%88%90%e4%bb%80%e4%b9%88%e6%a0%b7/feed/ 1
用PHP实现Django的模板系统 http://gonefish.info/2009/04/%e7%94%a8php%e5%ae%9e%e7%8e%b0django%e7%9a%84%e6%a8%a1%e6%9d%bf%e7%b3%bb%e7%bb%9f/ http://gonefish.info/2009/04/%e7%94%a8php%e5%ae%9e%e7%8e%b0django%e7%9a%84%e6%a8%a1%e6%9d%bf%e7%b3%bb%e7%bb%9f/#comments Wed, 22 Apr 2009 12:53:28 +0000 http://gonefish.cn/weblog/2009-3-13-1/ 继续阅读“用PHP实现Django的模板系统”]]> 这几天一直没有在做lifefix的开发工作,因为突然想用PHP实现一个Django的模版系统。如果不去试一试这个想法的话,估计我的开发工作也做不得不安宁。

开始分析django模板的源代码,一边用PHP来实现,现在基本上理解了其原理,现正在一步一步的实现。啊,期待一个完整的实现。

更新:现在已经移植了大部分功能,但自定义tag方面还没有完成,然后代码还有优化的余地。下周最好整理一下代码,然后发布出来。

移植工作已经基本上完成了,还有些filter没移植,但是支持PHP内部函数,发布在http://bitbucket.org/gonefish/shine/这里。

现在在准备文档。

]]>
http://gonefish.info/2009/04/%e7%94%a8php%e5%ae%9e%e7%8e%b0django%e7%9a%84%e6%a8%a1%e6%9d%bf%e7%b3%bb%e7%bb%9f/feed/ 4
内容管理框架 http://gonefish.info/2009/03/%e5%86%85%e5%ae%b9%e7%ae%a1%e7%90%86%e6%a1%86%e6%9e%b6/ http://gonefish.info/2009/03/%e5%86%85%e5%ae%b9%e7%ae%a1%e7%90%86%e6%a1%86%e6%9e%b6/#comments Sat, 28 Mar 2009 05:23:32 +0000 http://gonefish.cn/weblog/2009-3-28-1/ 继续阅读“内容管理框架”]]> 不知道PHP有没有这种东西,某国内的CMS系统代码也真是写的烂,而且架构不清晰。如果有一个基础的内容管理框架,然后在这之上再进行开发,那该有多好啊。

基于zope的cmf应该是个值得参考的东西

]]>
http://gonefish.info/2009/03/%e5%86%85%e5%ae%b9%e7%ae%a1%e7%90%86%e6%a1%86%e6%9e%b6/feed/ 1
PHP中的include http://gonefish.info/2009/03/php%e4%b8%ad%e7%9a%84include/ Sun, 15 Mar 2009 04:29:44 +0000 http://gonefish.cn/weblog/php-include-eval/ 继续阅读“PHP中的include”]]> 这几天在做一个PHP的模板引擎,这是一个有许多对象的东西,但是在PHP中没有命名空间,所以一般会采用PEAR的命名方法来组织类,这样的话就有许多的类分布在大量的小文件上,这样在加载的时候会造成性能的损失。为了解决这个问题我研究了一下include这个东西,通过查看源码和一些网络上的资料,发现在include和eval在底层实际是同一个东西,如果在一个文件中加载所有的类,这样只要包含这个文件就能获得所有的类了,还能保存不会存在类的命名空间问题。如果再通过apc这类中间码缓存系统,性能应该会更好。

实际上,在ZF1.7中的Zend_Loader就有这样的缓存方案,并且在官方文档的性能优化章节也说明了。

]]>
Zend Framework MVC流程图说明 http://gonefish.info/2009/02/zend-framework-mvc%e6%b5%81%e7%a8%8b%e5%9b%be%e8%af%b4%e6%98%8e/ Sun, 15 Feb 2009 16:04:59 +0000 http://gonefish.cn/weblog/explain-zend-framework-mvc-flow/ 继续阅读“Zend Framework MVC流程图说明”]]> 这个图是ZF文档中的,7.2节的图。由于中文文档还没有翻译,所以先搞个图看看,这个图画的非常好,非常明朗。 

我已经用不同的颜色标注了不同的部分。主要流程是绿色块,黄色部分是钩子,这种蓝色代表Request和Response对象,紫红色部分判断是否dispath完毕。基本方向就是:Request -> Router -> Dispatch -> Send Response

更新

 

Zend_Controller架构详解

更详细的说明请参看http://gonefish.cn/?page_id=473


 

 

]]>