小编puk*_*puk的帖子

与suPHP一起实现登录

如何将登录类似功能设计为使用suPHP的文件权限.例如,如果我有一个网站www.example.com和以下两个用户拥有自己的主目录,每个用户都有一个php脚本test.php,并且该validateUser.php脚本属于目录中的另一个用户(root,www-data,apache ...)/home.

/home/
??? validateUser.php
??? user1
?   ??? test.php
??? user2
    ??? test.php

user1可以user2's通过访问访问脚本www.example.com/user2/test.php,反之亦然.相反,我想要的,是渠道的所有传入的请求,使用类似mod_rewrite的,对validateUser.php.但是,这样做会导致执行所有脚本作为validateUser.php目标test.php脚本的所有者,而不是目标脚本.

无论如何在suPHP启动之前调用php脚本,然后允许suPHP继续,或完全中止.


编辑这是我提出的第二个赏金.我给Gustav的第一个b/c他给出了一个很好的部分答案.我会提到我到目前为止所尝试的内容,以及为什么它们都不适合我.

1)我尝试使用mod_rewrite将URL重定向validateUser.php到登录用户,或者调用他们想要调用的任何脚本.问题是,我已经把我的虚拟主机,使得每个用户都有自己的虚拟站点(即www.user1.example.com,www.user2.example.com......如果这是一个不好的设计方法,随意粗暴地指出来).因此,虽然OS看到如上所述的文件结构,但在线,根目录也是这样设置的

VirtualHost = www.user1.example.com
??? validateUser.php
??? test.php
VirtualHost = www.user2.example.com
??? validateUser.php
??? test.php
Run Code Online (Sandbox Code Playgroud)

当然,我只是将一份副本移动validateUser.php到每个用户的目录中.问题是现在用户可以删除该文件并在其中放置他们想要的任何内容,就像根本不需要登录一样.解决这个问题的方法是使主文件夹变粘(不是我建议对主文件夹执行的操作)并使validateUser.phproot拥有.但现在它将执行AS root,因为这是suPHP.这就是我放弃的地方.

2)我可以使用古斯塔夫的mod_auth建议,但我不喜欢它预先要求密码(如旧学校网站).

3)我已经考虑了1)的变体,如果我可以在虚拟主机之间重定向.例如,像这样重构虚拟主机

VirtualHost = www.user1.example.com
??? test.php
VirtualHost …
Run Code Online (Sandbox Code Playgroud)

php permissions login suphp

7
推荐指数
1
解决办法
356
查看次数

Apache2是否支持子域的虚拟托管?

目前我的Apache服务器设置如此

<VirtualHost *:80>
 ServerName www.example.com
 ServerAlias example.com
 DocumentRoot /var/www
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

问题是下面的所有内容/var/www都可以从其他地方访问.如果我有一个网页/var/www/john/bio.html,那么该网页可以借用脚本/图片var/www/jane/

我想像这样设置我的Apache服务器

<VirtualHost *:80>
 ServerName www.example.com
 ServerAlias example.com
 DocumentRoot /var/www
</VirtualHost>

<VirtualHost *:80>
 ServerName www.john.example.com
 ServerAlias john.example.com
 DocumentRoot /var/www/john
</VirtualHost>

<VirtualHost *:80>
 ServerName www.jane.example.com
 ServerAlias jane.example.com
 DocumentRoot /var/www/jane
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

因此,所有用户的文件john去的/var/www/john/文件夹,同样的用户jane.然后,关闭符号链接(默认情况下),并且仅从/var/www/user/下方提供访问(默认情况下再次),我不必担心john's网页包含来自jane's网页的脚本/图像.

subdomain apache2 virtualhost

7
推荐指数
1
解决办法
3万
查看次数

是否有任何插件/方式来管理Vim中的多个项目?

我总是同时处理多个项目.我拥有的文件数量细分如下

  Project   |   Files
--------------------------
  Thesis         20
  Simulator      50
  Plots          30
  Graphs         30
  Website        500+
Run Code Online (Sandbox Code Playgroud)

将所有这些文件放在一个窗口中是很麻烦的.有几种选择,我会讨论他们的画布,或者我敢说他们的阿喀琉斯之踵.

  1. 拆分Windows我可以将vim分成5个窗口,每个项目一个,但我不妨通过针孔编码.我实际上从来不是分裂窗口的粉丝,除了你经常比较和编辑两个相关文件的情况.此外,我发现两个维度的导航无法像水平方向那样无缝导航.

  2. 选项选项卡,或者更确切地说是视图,愚蠢地称为选项卡,似乎完全适用于此类问题,但它们不提供对缓冲区的限制.例如,如果我在我的Thesis标签中,我只想导航那20个缓冲区,而不是所有500个网站相关的缓冲区.当我将这些保存为会话时,如果我不小心切换到website我的Thesis选项卡中的缓冲区,退出,然后在进入时我可能会导致问题,我有两个website选项卡.这还有问题,因为我:lcd为每个选项卡设置了本地目录().

  3. 终端选项卡使用终端选项卡可确保每个选项卡中的缓冲区保持独立.但是,每个vim会话都不能再共享信息.我不能把文字从一个终端拉到另一个终端(我想我可以进入+寄存器).我也不能再使用:buffdo所有的缓冲区了.此外,我喜欢这样一个事实,即我可以将所有vim选项卡保存到单个会话中.

我知道,这样的诅咒公众讨论,所以我会代替问是否有存在的方式来实现我追求的功能.

编辑总结我需要的一个好方法是说我想要"子缓冲区".

编辑我想从vim的标签中获取的是能够更有效地使用它们的功能:视口.我希望能够为我的论文部分专门设置一个标签.在本节中,我将更改本地目录以反映它.此外,我想过滤掉该表中的缓冲区,使其只是所有缓冲区的子集.类似地,在模拟器选项卡中,我想将它专门用于我的模拟器文件.

基本上就是我要的是能力,通过标签,运行VIM的多个独立的会话,但仍然有一些附加津贴(即共享寄存器能够抽出)

vim plugins project-management

7
推荐指数
1
解决办法
2268
查看次数

在Vim中是否有相应的更改(c)命令用于粘贴(p)?

通过插入,可以很容易地擦除单词/部分并插入其上,就像这样

  • cw 删除直到单词结尾(带空格)然后转到插入模式
  • ce 删除直到单词结尾(没有空格)然后转到插入模式
  • c3w 删除直到接下来的3个单词结束(带空格)然后进入插入模式
  • ct. 删除到句点之前然后转到插入模式
  • c$ 删除直到行结束然后转到插入模式

如何使用粘贴操作执行此操作?我经常有一条这样的线

var name = "John Smith"
var name = "Jane Smith"
Run Code Online (Sandbox Code Playgroud)

我把它改成了

var name = "John Lee"
var name = "Jane Smith"
Run Code Online (Sandbox Code Playgroud)

和yank(yw)"李",但现在如果我dw从"简史密斯" 删除()"史密斯",我不再有"李"在寄存器中粘贴.我知道我可以使用命名的寄存器.此外,我相信我可以使用视觉模式.但是,我想,因为这是一个很常见的任务,将有使用移动运营商(的方式e,w,t/ T,f/ F,$,0)用粘贴命令来指定哪些粘贴过来.

vim copy-paste paste yank

7
推荐指数
2
解决办法
650
查看次数

为什么字体设置在gvim中不起作用?

在Fedora15中,我最初使用的是vim,我的~/.vimrc文件中定义了所有设置.我最近安装了vim-X11,现在已经过渡到gvim了.我定义了一个~/.gvimrc文件,用以下行来设置字体:

set guifont=Bitstream_Vera_Sans_Mono:h11:cANSI
Run Code Online (Sandbox Code Playgroud)

但是,它不起作用.有两件奇怪的事情:

  1. 行号,颜色方案等其他设置正常,但字体设置不起作用.相反,我每次都需要在工具栏中设置它们来更改字体:"编辑 - >选择字体".

  2. 每次我选择"编辑 - >启动设置"时,它都会打开~/.vimrc文件而不是~/.gvimrc文件.

vim fonts

7
推荐指数
1
解决办法
6224
查看次数

为什么文件流没有被xmlreader关闭

所以我在里面使用文件流 xmlreader

using (XmlReader reader = XmlReader.Create(new FileStream(archivePath, FileMode.Open), readerSettings))
{
    reader.close()
}
Run Code Online (Sandbox Code Playgroud)

但是,进入xmlreader的文件仍然处于使用范围之后的锁定状态,很奇怪,我xmlreader想要为我关闭文件流,不是吗?

感谢帮助.

c# xmlreader

7
推荐指数
2
解决办法
8875
查看次数

无法用dd备份SD卡,抱怨"输入/输出错误"

我通过发出以下命令成功备份了我的SD卡两次

sudo dd if=/dev/sdb of=/home/user/Documents/raspi/images/raspi1.v2.iso bs=1M
Run Code Online (Sandbox Code Playgroud)

但是,现在它给了我以下错误:

dd: reading `/dev/sdb': Input/output error
3027+1 records in
3027+1 records out
3174977536 bytes (3.2 GB) copied, 200.723 s, 15.8 MB/s
Run Code Online (Sandbox Code Playgroud)

环顾网络,这似乎表明SD卡已损坏.但是,我的raspi(我用这张SD卡运行)运行良好(ish)和磁盘工具声称SD卡没有损坏.

有没有其他方法可以找出为什么dd抱怨,如果卡已损坏,如果是,如何修复SD卡.

更新:

我放弃了尝试dd在SD卡上运行,但我确实弄清楚了什么损坏了我的SD卡,这是在网站上指定的Raspi固件的更新

backup dd flash-memory

7
推荐指数
1
解决办法
9726
查看次数

用于同步多个视频播放器的算法/方法

动机: 我目前正试图在两个联网的raspis上同步两个视频.我尝试从桌面(http和udp)实时流式传输,但每个raspi仍然以明显的延迟打开流.我接下来尝试在raspi上安装vlc并与桌面vlc同步,但这也不起作用.我尝试使用shell脚本在两个raspis上几乎同时启动omxplayer,但也失败了.最后,我使用C脚本在几乎相同的时间启动两个omxplayers,这也失败了.最终,我认为无法控制omxplayer何时开始实际播放视频文件.

当前进展: 因此,现在,我正在修改omxplayer的代码以使用套接字同步两个omxplayers,但我想知道vlc在同步其视频客户端时采用的方法,以便不重新发明轮子.我可能是错的,但我注意到,通过查看详细的输出和调试语句,一个玩家将失去相对于另一个玩家的时间,这样当视频播放时,这种差异会累积,并且在2-3分钟后超过200女士.我觉得这非常令人不安.这意味着在2小时后,差异将是60*200ms=12000ms或在附近12s.我认为现代计算的精确度更像是原子钟的精确度,在1000小时的镜头之后可能会损失1秒,因此我认为只需同步一次这样就足够了.

问题: 如果不同的玩家必须进行常规同步,那么像vlc这样的做法是什么?

  1. 它会等到有明显的延迟和快进/快退吗?
  2. 只要有任何差异,它会快进/快退吗?
  3. 纠正这种差异(即套接字信号)本身会导致进一步的延迟吗?
  4. 由于在视频中移动到远处的时间比连续播放要长,它如何预测快进/快退的秒数?
  5. 我听到很多人都在谈论滴答声(不是昆虫),以及主vlc如何发出滴答声.然而,我不明白的是这些刻度是如何被解释的:你是否暂时暂停所有其他玩家直到下一个刻度,或者你是否以某种方式调制视频的速度(如果甚至可以在飞行中)?

注意:我没有流式传输实际的视频文件,因为它们都是通过每个raspis上的NFS远程访问的.

algorithm video media-player

7
推荐指数
1
解决办法
1418
查看次数

使用Python的stat函数有效地获取所有者,组和其他权限

题:

如何有效地使用stat函数来获取有意义的文件权限(用户,组和其他).

细节:

我正在查询文件权限,如下所示:

statInfo = os.stat
permissions = stat.S_IMODE ( os.stat ( 'fooBar.txt' ).st_mode )
Run Code Online (Sandbox Code Playgroud)

这将以十进制形式返回权限.因此,如果fooBar.txt具有八进制文件权限0700,则此处permissions设置为十进制值448.我想是设置9个变量对每个权限(ownerRead,ownerWright,ownerExecute,groupRead,...)如果我要做到这一点,我会用蛮力方法如下所示:

statInfo = os.stat
permissions = stat.S_IMODE ( os.stat ( 'fooBar.txt' ).st_mode )
octPermissions = oct ( permissions )

ownerRead = octPermissions [1] >= 4
ownerWrite = octPermissions [1] == 2 or octPermissions [1] == 6 or octPermissions [1] == 3 or 
ownerExecute = octPermissions [1] …
Run Code Online (Sandbox Code Playgroud)

python permissions octal stat

6
推荐指数
2
解决办法
3392
查看次数

重新映射Vim键以避免左手RSI

我的左手腕总是受到RSI的影响(见这里),我认为这是因为与按下ctrl和shift键相关的扭转动作.因此,我继续购买了下面显示的Advantage Kinesis键盘:

在此输入图像描述

然而,即使使用这个键盘和脚踏板,并将shift键映射到Back Space,我仍然有RSI,再次只在我的左手.然后它对我来说很明显,大量的运动键与左手相关联.这是右边的东西,然后是左手的非详尽列表.

右手:

  • p 一个简单的粘贴语句,几乎总是单独使用
  • o 在当前行上方/下方写入,几乎总是单独使用
  • i 写入光标,几乎总是单独使用
  • u 撤消,几乎总是单独使用
  • y抽出,用于与运动命令,但只能在右侧的几个运动符(即(,),i...)
  • h,j,k,l,单个字符的运动,很少使用.

现在观察

左手:

  • w,e,b运动一个字.经常与数字一起使用,或多次按下.
  • t,f,$所有结合键等y,dv
  • Ctrl w+ h,j,k,或者l,移动窗口,并要求用你的左手一个跃动.
  • Ctrl x Ctrl f 全方位完成(IIRC)
  • Ctrl f Ctrl g 在光标下查找文件

现在我确信这是一个有偏见的列表,但它得到了我的观点,大量常用的动作键和一些其他困难的组合位于键盘的左侧.

我的问题是,是否有一种非重塑的方式来做到这一点?例如,有没有任何图书馆这样做?如果没有,如果我切换到DVORAK,这会解决我提到的任何问题吗?

vim ergonomics remap

6
推荐指数
1
解决办法
1017
查看次数