标签归档:apache

subversion “Propfind 302 found” error

svn服务出了问题,可以checkout,已经存在的文件,可以修改,提交,但是新加的文件add后不能commit。
报错说什么”Propfind xxx 302 found”

Adding: D:\workspace\test\New Text Document.txt
Error: Commit failed (details follow):
Error: PROPFIND request failed on ‘/svn/test/New%20Text%20Document.txt’
Error: PROPFIND of ‘/svn/test/New%20Text%20Document.txt’: 302 Found (http://svn.test.com)

google了一下,说是启用了ErrorDocument 404 handler 就会遇到这个问题,需要禁用Subversion目录特殊的404 error handling,
解决方法是添加
ErrorDocument 404 default
到svn的Location立面

改了之后,httpd.conf里面的svn配置大概如下:

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
#设置访问路径
# Uncomment this to enable the repository,
DAV svn
# Set this to the path to your repository
SVNParentPath /data/svn_repository/
# The following allows for basic http authentication. Basic authentication
# should not be considered secure for any particularly rigorous definition of
# secure.
# to create a passwd file #按下面的步骤创建Apache用户验证文件
# # rm -f /etc/apache2/dav_svn.passwd
# # htpasswd2 -c /etc/apache2/dav_svn.passwd dwhedon
# New password:
# Re-type new password:
# Adding password for user dwhedon
#

# Uncomment the following 3 lines to enable Basic Authentication
AuthType Basic
AuthName “Subversion Repository”
AuthUserFile conf/extra/svnpasswd.file
# Uncomment the following line to enable Authz Authentication
AuthzSVNAccessFile conf/extra/dav_svn.authz
# The following three lines allow anonymous read, but make
# committers authenticate themselves.
#
#允许匿名访问,不允许Commit,不能与AuthzSVNAccessFile同时使用
Require valid-user
#

ErrorDocument 404 default

用netstat和任务管理器查找占用端口的进程

昨天要用xampp,启动的时候报错,说是443端口被占用了,瞅了半天开的应用程序,觉得奇怪,那个程序会用443呢?用进程管理器一阵乱杀,,,,结果,没效果。本想重起,又一想,这样不解决根本问题,于是google了一把,找到了解决方法。
开始,运行,cmd
运行
netstat -ano
说明
a:显示所有连接和监听的端口
n:用ip地址的形式显示地址和端口
o:显示和连接想关的进程id。
用这个方法查出占用端口的进程id
然后按ctrl+shift+esc,打开windows task manager 任务管理器,切换到进程(processes),如果没有pid,进程id的column点击查看下面的select comumns… 选中PID(Process Identifier),确认后,按照pid排序,查找相应netstat命令查出来的pid对应的应用程序。

我这里查出来,居然是qq,杀掉后问题解决,不知道这个鬼东西为啥要用443端口。
以前还发现过skype用80端口的事情,如果不用apache等软件还好,不然还真麻烦,解决方法是skype的tools/options…/connection
去掉use port 80 and 443 as alternatives for incoming connections

查了一下,linux系统中,netstat用法基本相同,只需将o换成p,另外要用root帐号来查,windows应该也要有administrator权限,只不过用的帐号式管理员权限。

-p, --programs             display PID/Program name for sockets
[root@call root]# netstat -anp

查出来后,该kill还是killall就看你咯

随机变化的.jpg图片

实现的原理很简单,就是apache的url_rewrite功能+php程序
url_rewrite代码

[test@test htdocs]$ cat .htaccess 
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^images/logo\.jpg$ /test/randomimg.php [L]
</IfModule>

php代码

<?php
/*
* Created on 2007-3-20
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
header("Content-Type: image/jpeg");
$dir    = './images/';
 
$imgarr=array();
if ($handle = opendir($dir)) {
    while (false !== ($file = readdir($handle))) {
        if (preg_match ("/(.*?)\.jpg$/i", $file) ) {
                array_push($imgarr,$dir.$file);
        }
    }
    closedir($handle);
}
//srand ((float) microtime() * 10000000);
readfile($imgarr&#91;array_rand ($imgarr)&#93;);
?> 

只要把把要显示的图片放到
$dir目录里就可以了:)
效果点击这里,或者刷新本页面,看右上角的图片。

apache url_rewrite的一个规则

实现的目的就是:
访问http://www.domin.com/user/*.*时
全部rewrite到对应的http://www.domin.com/*.*
当然包含子目录
譬如对http://www.domin.com/user/news/A01.htm时
会对应到http://www.domin.com/news/A01.htm

Options +FollowSymLinks 
RewriteEngine on
RewriteRule user/(.*)$ $1

放在“/”测试通过