Zend Framework 2在Nginx服务器下无法路径重写的解决办法

今天我在我的pcDuino上添加Zend Framework 2应用程序,在Nginx中添加了Server的配置之后打开网站,发现首页没有任何问题,但是其他的Module都无法进入,我想想感觉问题应该出在路径重写的问题上。我想要不我把.htaccess的规则改写成Nginx的rewrite规则吧!然后我打开.htaccess,内容如下:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]

有种虽不明但觉利的感觉,算了,我放弃我刚刚的想法,怎么办怎么办?算了,我还是去咨询一下把,于是跑到Stackoverflow去问了下这个问题,有个老外回答了下:

You really do not need any rewrite rules to make Nginx and ZF2 to play nice together. Here is a very simple Nginx configuration which I use:

server {
    listen *:80;
    server_name DOMAIN;

    # Character Set
    charset utf-8;

    # Logs
    access_log /vhosts/DOMAIN/logs/access_log main;
    error_log /vhosts/DOMAIN/logs/error_log;

    # Directory Indexes
    index index.php;

    # Document Root
    root /vhosts/DOMAIN/public;

    # Location
    location / {
        try_files $uri $uri/ /index.php;
    }

    # Error Pages
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;

    # PHP-FPM Support
    location ~ \.php$ {
        fastcgi_pass unix:/usr/local/etc/php-fpm/DOMAIN.sock;
        include fastcgi.conf;
    }

    # Block access to .htaccess
    location ~ \.htaccess {
        deny all;
    }
}

Of course change the paths to your current setup. Since you did not mention what type of PHP installation you are using I can’t help you there because I am currently using PHP-FPM.

Using this very simple setup all my modules are working as expected. For example I could visithttp://example.com/some/url OR http://example.com/index.php/some/url

Nginx also has a simple configuration for ZF http://wiki.nginx.org/Zend_Framework#Time_for_nginx

我试了下,果然成功了!

最重要的是配置Location的:

location / {
    try_files $uri $uri/ /index.php;
}

和阻止.htaccess的:

location ~ \.htaccess {
    deny all;
}

dedecms后台无法登录解决办法

今天开始修改一个基于dedecms的网站,我要登录它的后台管理系统,地址是domain/dede,页面显示正常,用户名和密码输入没有问题,结果显示一片空白,根本无法进入后台,于是我开始查找问题所在。

我先找到到dede下的login.php,经过我各种断点之后,发现是79行的:

$cuserLogin->keepUser();

有问题,$cuserLogin是userLogin类的对象,userLogin类的位置在dedecms的include中的userlogin.class.php,在290行左右有一句:

@session_register($this->keepUserIDTag);

我去掉了代码前面的@,程序的报错终于出来了,我到php的手册里查了下session_register这个方法,里面写着大大的Warning:

Warning

本函数已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除

好了!原来如此!我的php正好是5.4,这可如何是好啊?要不我重写一个session_register方法吧!

function session_register(){
	$args = func_get_args();
	foreach ($args as $key){
		$_SESSION[$key]=$GLOBALS[$key];
	}
}

将这段代码写入userlogin.class.php中,dedecms的后台就成功登录进去了!不知道dedecms官方啥时候修改这个bug啊?

Chrome浏览器12px以下字号的字体无法正常显示问题的解决方法

在工作中遇到了一个问题,在Chrome浏览器中,12px以下字号的字体显示的大小跟12px的大小是一样的,如下图:

chrome
而IE是正常的:
ie
火狐也是正常的:
firefox
那么我们怎么来解决这个问题呢?解决方法是在样式中加入下面这句代码:
-webkit-text-size-adjust:none;
效果:
chrome2
这样问题就迎刃而解了。

Zend Framework无法开启Apache服务器的mod_rewrite模块的解决办法

        Zend Framework的原理是把所有文件的访问都引向单一入口程序index.php,然后再由Zend_Controller_Router_Route进行路由转发,如果使用使用Apache服务器的.htaccess重写规则就必须打开Apache的服务器的mod_rewrite模块,但是很多的服务器是没有打开这个模块的,比如你买了一个空间,结果空间没有打开这个模块,那你又必须使用,怎么办呢?Zend Framework就不可以使用了吗?有的人说不可以,巧妇难为无米之炊。但是我想想觉得如果这个问题都没有解决Zend Framework怎么能在PHP界立足呢?
        后来我找到了解决的方法。方法其实很简单,就是在访问的时候加上index.php就可以了,例如:正常情况下的URL:http://www.youdomain.com/controller/action。现在我们只需把URL改成:http://www.youdomain.com/index.php/controller/action,并把.htaccess删除掉就可以了。

Windows 8应用商店无法连接网络的解决方法

        Windows 8 全新的Modern UI(Metro)的开始菜单以说是Window 系统一个巨大的变革,微软做出这样的变革也是下了决心的。我们可以在里面轻松的更安全下载常用的程序,浏览新闻资讯,可很多安装Windows 8 的朋友可能遇到这一问题,在打开开始中的Windows应用商店,需要连接到互联网,加载了一会儿会提示说“无法访问Internet”,可我们的电脑的确已经连接到网络了,在开始中其他的应用程序能够访问网络,在桌面环境下,访问网络也完全没有问题,该如何解决此类问题呢?
网上很多人的说法是把DNS服务器改成谷歌的8.8.8.8,备用DNS服务器改成8.8.4.4,本人也是试过的,刚刚开始时可以的,成功连接了网络,可是后来又不行了,我怀疑是不是谷歌的东西在天朝随时遭受封杀,于是就把DNS服务器改成浙江电信的202.96.96.68和202.96.104.18,修改之后立刻可以访问了!!!完全没有问题!
以下是全国DNS服务器地址大全的地址,如果不行大家可以进去随便选几个,最好选离自己家近的:
http://blog.sina.com.cn/s/blog_5fcdb04a0100d8at.html

 

Tonitech版权所有 | 转载请注明出处: http://www.tonitech.com/?p=1459