[我看过几本教程,以FastCGI的形式在IIS下解释PHP的安装,建议将open_basedir设置为指向网站内容所在的文件夹或网络路径。
当我在应用程序服务器上设置open_basedir时,管理文件时出现以下错误:警告:open_basedir限制有效。文件(C:\ Windows \ Temp \ php92E7.tmp)不在允许的路径内:(C:\ inetpub \ wwwroot)
我知道我可以在inetpub下设置一个临时目录,但是我不明白为什么使用Windows \ temp是一个问题。
作为IIS上的FastCGI,PHP是否存在安全缺陷,因此要求open_basedir限制?如果没有,为什么推荐?还是没有必要?使用具有正确权限的AppPool身份能否获得open_basedir的优势?
设置open_basedir(不仅在具有IIS的Windows上,而且在任何Web服务器上的任何平台上)都是一种安全措施,用于限制您的应用程序可以读取,写入和和包含]的文件。
PHP可以从文件系统中的任何位置包含任何包含PHP代码的文件,实际上并不是安全缺陷,但这是一项功能。例如,您可能在Web根目录上有一些文件,而在Web根目录之外有其他文件(Web服务器将无法访问它们,但PHP将可以访问它们)。
但是,如果您的程序存在缺陷,您的用户可能可以读取或包含(甚至编写)不属于应用程序的文件。这些文件可能是系统文件,用户上传的文件或其他应用程序的文件。这就是open_basedir很重要的原因。
注意,在设置open_basedir之后,还要设置其他PHP函数的路径(例如upload_tmp_dir),因为它们也应位于open_basedir路径下。