存档

  • 在Godaddy的主机上配置CodeIgniter

    之前在CodeIgniter上部署过一个小的CodeIgniter的应用,参考了这篇文章,当时顺利的完成了部署运行的任务。主要是因为在Godaddy的虚拟主机上使用rewrite模块产生的问题,原因不知道,只知道一种解决问题的办法。主要的步骤为: 在config.php里修改配置,使用QUERY_STRING的方式来解析URL $config['uri_protocol'] = "QUERY_STRING"; 然后,修改.htaccess文件,使其内容为如下所示: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?$1 [L] 这样,某个请求,如http://www.example.com/blog/view/123 ,实际上会被解析成http://www.example.com/index.php?blog/view/123 ,但是,假如我使用的请求必须通过GET方法传参数呢?这种解决方案就不能解决问题了。如http://www.example.com/index.php?blog/view/123?from=1009&author=bbiao ,这个时候就无法通过parse_str($_SERVER['QUERY_STRING'], $_GET);的方法来获得GET的数据了。但是我们可以观察到$_SERVER['REQUEST_URI']里保存了blog/view/123?from=1009&author=bbiao的值,OK,解析一下这个数据就可以了。代码如下: $arr = explode(‘?’, $_SERVER['REQUEST_URI']); parse_str($arr[1], $_GET); 另外说一句,由于CI里是把$_GET的数据清空的,所以才有了以上的这些说法,CI本身是不推荐使用GET来传递参数的,但有时候又不得不用,比如使用OAuth的时候,别人回调你的接口的时候都是这样传的,你能怎么办呢?事情总有解决办法的,现在我的程序在Godaddy上跑的一切正常。

    1,874 次查看 | 没有评论
    2010年6月2日 | 归档于 CodeIgniter, Linux, opensource
  • 使用CI进行开发时遇到的一个诡异问题:无法找到文件404

    问题描述:我写了两个方法,add_product,save_product,add_product方法将会展现一个form给用户,用户可以在这里填写产品的基本信息,还可以上传产品的一张图片,save_product用来处理上一个方法POST过来的数据。逻辑很简单,用到了CodeIgniter里的Upload和Image_lib两个Library,在机器上测试也是十分的顺利,传到服务器上我甚至都没有想到会出问题,但是却出了一个让我摸不着头脑的问题,在保存文件时,服务器返回了404,也就是文件没有找到。在确认了配置信息都正确的情况下,我有点摸不着头脑了,于是GET了一下save_product方法,发现可以GET到,POST数据过去的时候,却返回404,奇怪奇怪! 由于被这奇怪的错误信息所迷惑,所以到周一的早日才想到祭出我的法定,分解测试,把代码隔成段,我先把save_product里的代码全部注释掉,服务器返回500,正常;再把处理上传的代码解注释,服务器返回正常;再把进行图片缩放的代码解注释掉,服务器返回404,无法找到文件。基本上确定是在图像处理的环节出了问题,于是把’image_library’ => ‘GD2′换成’image_library’ => ‘GD’,问题解决。 可是到现在也没有想通即使服务器上没有gd2模块,我调用了相应的函数,为什么页面返回404。同时鄙视一下某个服务器提供商,PHP的许多常用的模块都没有加载,JSON解析都么有,怎么做应用呢?? 更新:问题解决了,出问题的函数是imagefill,某个服务器提供商的虚拟主机里提供了GD2,不过是一个相当老的版本。我替换了解决PNG图片缩放透明的算法,就OK了,但是一旦调用imagefill,就会返回一个404错误,还是费解。

    773 次查看 | 没有评论
    2009年11月16日 | 归档于 CodeIgniter
  • CodeIgniter中PNG图片处理背景不透明问题的解决办法

    BS一下自己起的这个标题。 本文仅限于解决使用GD2来处理图片的情况。 我想很多用CodeIgniter的人都会有这样的需求,用户上传了一张照片,需要对照片进行一定的修改以后(缩放,调整大小)再存储下来,但是如果用户上传了一张背景透明的PNG图片,那么我们使用CodeIgniter中的Image_lib进行裁剪以后,将会得到一张背景是黑色的图片,为什么会产生这个错误呢,我们来看一下CI的处理逻辑。 新建一张图片,该图片默认是黑色不透明背景 把源图片相应区域中的内容复制到新图片上 处理完毕 毫无疑问,你将获得一张黑色背景的图片,其最根本原因还是在于使用GD2来处理图片时,imagecreatetruecolor函数本身生成的就是一张黑色不透明的图片,你把一个透明的图片拷贝到它上面,当然背景就变黑了,所以我们只要在以上步骤里的1与2之间添加处理,将新图片的背景设置成100%透明即可以解决这个问题。 在Image_lib.php(CodeIgniter 1.71版本)的515行 即$dst_img = $create($this->width, $this->height);之后添加 // Transparent the background!!! if ($create == ‘imagecreatetruecolor’) { imagesavealpha($dst_img, true); $color = imagecolorallocatealpha($dst_img, 0, 0, 0, 127); imagefill($dst_img, 0, 0, $color); } 便可以解决问题了。 更新,提供另一种办法: // Transparent the background!!! if ($create == ‘imagecreatetruecolor’) { imagealphablending($dst_img, false); imagesavealpha($dst_img, true); } <!– end –>

    1,228 次查看 | 没有评论
    2009年9月17日 | 归档于 CodeIgniter
    标签: ,
‘CodeIgniter’ 分类的存档