jjzjj

realpath

全部标签

php - 如何调整 PHP 真实路径缓存?

最新版本的PHP有一个文件名缓存,用于了解文件的真实路径,并且require_once()和include_once()可以利用它。您可以在php.ini中设置一个值来设置缓存的大小,但我不知道如何判断大小应该是多少。默认值为16k,但我看不出有多少缓存在使用。文档含糊不清:DeterminesthesizeoftherealpathcachetobeusedbyPHP.ThisvalueshouldbeincreasedonsystemswherePHPopensmanyfiles,toreflectthequantityofthefileoperationsperformed.是的

php - $absolutePath = realpath(__DIR__) 中的 "realpath"是多余的吗? __DIR__ 总是规范的绝对路径吗?

做这样的事情是不是一种感觉$dir=realpath(dirname(__FILE__));//orforphp5.3+:$dir=realpath(__DIR__)或者像DIR和FILE这样的魔术常量总是返回绝对路径,所以realpath是多余的? 最佳答案 您不需要realpath()。__FILE__的文档:Thefullpathandfilenameofthefile.Ifusedinsideaninclude,thenameoftheincludedfileisreturned.SincePHP4.0.2,__FILE__

php - 替换 PHP 的 realpath()

显然,realpath有很多问题。在PHP5.3.1中,它会导致随机崩溃。在5.3.0及更低版本中,realpath随机失败并返回false(当然是针对相同的字符串),而且它总是在realpath上失败-对相同的字符串进行两次/更多次(当然,它是第一次工作)。此外,它在早期的PHP版本中有很多错误,以至于完全无法使用。好吧……它已经是了,因为它不一致。无论如何,我有什么选择?也许自己重写?这可取吗? 最佳答案 感谢SvenArduwie的代码(pointedoutbyPekka)和一些修改,我构建了一个(希望)更好的实现:/***T

go - 直接运行 bash 命令与通过 exec.Command 运行的结果不同

在Linux操作系统上,运行“realpath~/bin”给出正确的路径“/home/user1/bin”。但是当我按如下方式运行它时:cmd:=exec.Command("realpath","~/bin")varoutbytes.Buffercmd.Stdout=&outerr:=cmd.Run()iferr!=nil{panic(err)}fmt.Println("Realapth:",out.String())我遇到了panic:退出状态1。顺便说一句:使用如下命令:cmd:=exec.Command("realpath","--help")我可以获得关于realpath命令的

go - 直接运行 bash 命令与通过 exec.Command 运行的结果不同

在Linux操作系统上,运行“realpath~/bin”给出正确的路径“/home/user1/bin”。但是当我按如下方式运行它时:cmd:=exec.Command("realpath","~/bin")varoutbytes.Buffercmd.Stdout=&outerr:=cmd.Run()iferr!=nil{panic(err)}fmt.Println("Realapth:",out.String())我遇到了panic:退出状态1。顺便说一句:使用如下命令:cmd:=exec.Command("realpath","--help")我可以获得关于realpath命令的

c - 如何在 linux 下使用 realpath() 以编程方式获取文件的绝对路径?

我知道可以使用realpath()函数获取文件的绝对路径。但是,根据联机帮助页的BUGS部分,其实现存在一些问题。详情如下:错误避免使用此功能。它被设计破坏了,因为(除非使用非标准的resolved_pa​​th==NULL特性)不可能为输出缓冲区resolved_pa​​th确定合适的大小。根据POSIX,大小为PATH_MAX的缓冲区就足够了,但PATH_MAX不必是定义的常量,可能必须使用pathconf(3)获得。并且询问pathconf(3)并没有真正帮助,因为一方面POSIX警告pathconf(3)的结果可能很大并且不适合mallocing内存。另一方面,pathconf

c - 如何在 linux 下使用 realpath() 以编程方式获取文件的绝对路径?

我知道可以使用realpath()函数获取文件的绝对路径。但是,根据联机帮助页的BUGS部分,其实现存在一些问题。详情如下:错误避免使用此功能。它被设计破坏了,因为(除非使用非标准的resolved_pa​​th==NULL特性)不可能为输出缓冲区resolved_pa​​th确定合适的大小。根据POSIX,大小为PATH_MAX的缓冲区就足够了,但PATH_MAX不必是定义的常量,可能必须使用pathconf(3)获得。并且询问pathconf(3)并没有真正帮助,因为一方面POSIX警告pathconf(3)的结果可能很大并且不适合mallocing内存。另一方面,pathconf

c - 如何在 Linux "even if the filepath is not existing on the file system"上获取规范化(规范化)文件路径? (在 C 程序中))

我对这个主题进行了很多研究,但没有得到任何实质性的东西。通过标准化/规范化,我的意思是从文件路径中删除所有“..”、“.”、多个斜杠等,并获得一个简单的绝对路径。例如"/rootdir/dir1/dir2/dir3/../././././dir4//////////"to"/rootdir/dir1/dir2/dir4"在Windows上我有GetFullPathName()并且我可以获得规范的文件路径名称,但是对于Linux我找不到任何可以为我做同样工作的API,realpath()在那里,但即使是realpath()也需要文件路径存在于文件系统上才能输出规范化路径,例如如果路径/r

c - 如何在 Linux "even if the filepath is not existing on the file system"上获取规范化(规范化)文件路径? (在 C 程序中))

我对这个主题进行了很多研究,但没有得到任何实质性的东西。通过标准化/规范化,我的意思是从文件路径中删除所有“..”、“.”、多个斜杠等,并获得一个简单的绝对路径。例如"/rootdir/dir1/dir2/dir3/../././././dir4//////////"to"/rootdir/dir1/dir2/dir4"在Windows上我有GetFullPathName()并且我可以获得规范的文件路径名称,但是对于Linux我找不到任何可以为我做同样工作的API,realpath()在那里,但即使是realpath()也需要文件路径存在于文件系统上才能输出规范化路径,例如如果路径/r

php - 在 PHP 中防止目录遍历但允许路径

我有一个基本路径/whatever/foo/和$_GET['path']应该是相对于它的。但是如何在不允许目录遍历的情况下完成此操作(读取目录)?例如。/\.\.|\.\./无法正确过滤。 最佳答案 嗯,一种选择是比较真实路径:$basepath='/foo/bar/baz/';$realBase=realpath($basepath);$userpath=$basepath.$_GET['path'];$realUserPath=realpath($userpath);if($realUserPath===false||strpo