PHP手册指出:
open_basedir(string)
将PHP可以访问的文件限制到指定的目录树,包括文件本身。此指令不受安全模式是打开还是关闭的影响。
当脚本尝试访问文件系统时,例如使用include或fopen(),将检查文件的位置。当文件在指定的目录树之外时,PHP将拒绝访问它。
另外,再进一步......
open_basedir不仅可以影响文件系统功能;例如,如果MySQL配置为使用mysqlnd驱动程序,则LOAD DATA INFILE将受open_basedir的影响。 PHP的许多扩展功能都以这种方式使用open_basedir。
然而,似乎这种限制没有达到套接字操作。在我的服务器上,即使我已将open_basedir
设置为/home:/tmp
,我仍然可以通过/run
功能访问socket_connect
下的套接字文件(请注意,我没有'}已将/var/run
(/run
)移至/home
或/tmp
下的某个扭曲位置。
是否有办法扩展open_basedir
的限制以包含套接字文件*路径,因此无法在/home
和/tmp
之外打开套接字文件?
*我知道套接字文件不是真的"打开",而是"绑定到"通过socket_connect
函数和bind
系统调用。但是,由于open_basedir
似乎适用于非文件系统功能......我猜测可能有办法。