综合问题解疑:Win2003 x64,php5.3.8/19,kohana

近期一个项目,用apache+php编写后台,大致共写了3个版本,第一个版本没有框架,用C++的方式写出来。总觉得这么些年来,还从没正式用过哪个php框架,于是用ThinkPHP框架大致重新组织代码,但发现ThinkPHP定死了utf-8编码,而这项目全程都是gbk编码的,仔细思考后,还是觉定放弃ThinkPHP,当然之间尝试过了把ThinkPHP全部转为了gbk来使用,为此还特地编了一个小程序(utf2gbk,点击下载)。

最终选择了kohana框架重写。没任何决定性的因素,更没有去比较其他框架的优劣,全凭当时的心情。

开发环境是Win7 x64+Apache2.22+mysql 5.5.20+php 5.3.8。

目标环境是Win2003++Apache2.22+mysql 5.5.20+php 5.2。

本机测试通过后,今天上午传到目标机器。问题冒出来一大堆,大致叙述如下备忘。

首先是报错,内容大致是未定义的常量(?)之类,找到这个原因没花多少时间:kohana需要php5.3.3以上。

于是把本机的php5.3.8打包上传到目标机器,替换掉原来的5.2,其中没更改任何配置,但apache死活起不来了。我看了下本机的配置,确实是Load了 php5apache2_2.dll。但Win2003 x64貌似比Winning x64少了什么能力,2003的x64无法正确Load php5apache2_2。

网上找了大量的文章,不得要领。期间到官网重新下来完整的apache、php 5.3.19的安装文件,都不能Load,于是想尝试下cgi方式来载入php。

下午下了mod_fcgid-2.3.6,改用cgi方式加载php。接下来遇到第三个问题,能访问静态文件,但访问php一律报错:拒绝访问。注释掉php的加载后直接显示php文件内容,所有基本确定php已经加载成功。浪费了很多时间来看搜狗,同时也多次对比手头几个httpd配置模版,眼睛都看花了也没看出问题在哪里。

答案在这里:http://aiyooyoo.com/index.php/archives/164/,厅级程序员。我少了这个了:Options Indexes FollowSymLinks ExecCGI,php-cgi网站必须加上ExecCGI。加上后testphp马上就出来了。

然后是关于kohana的问题,好好的网站,全部成了这:No input file specified。

能直接访问到每一个存在的文件,但rewrite全部失效了。当然,rewrite模块已经开启了,.htaccess也在(网站是本机测试后的完整打包),顿时很无助,搜狗没帮上我,google也帮不上忙,搜出来的几乎清一色的网站没配置好、权限什么的浮云,php.ini中的doc_root?离题几千里。

终于看到一个帖子提到rewrite规则的问题,即cgi下和load dll方式下的规则有差异。于是立马去http://kohanaframework.org看文档,果然有说明:Clean URLs。这个当然是看过的,只是当时没仔细看更多内容,在本机通过后就没细看了。

总算看到了久违的登录页码,但还有问题,点击登录冒出一大堆错误,数据库连接失败。一眼就看出,数据库参数不对,端口号错了,打开配置文件,明明已经设置了端口号。打开源码,发现数据库的配置参数根本就没有端口这个参数,这情景很让人狂晕。把端口号直接加在hostname后面,然后一切正常。

回过头来想想,或许一切问题都可以从原始文档得到答案,但文档都是英文的,给了我们非常充分的理由逃离文档,而直接用搜索期盼的答案。

文档都是英文的,很多的苦涩在其中。

This entry was posted in 程序.

发表评论