在虚拟主机服务器上,我将open_basedir设置为每个虚拟主机的。:/ path / to / vhost / web:/ tmp:/ usr / share / pear。 我有一个运行WordPress的客户,他抱怨open_basedir错误:
PHP警告:file_exists()[function.file-exists]:open_basedir限制生效。 文件(/ var / lib / php / session / sess_42k7jn3vjenj43g3njorrnrmf2)不在允许的path中:(。:/ path / to / vhost / web:/ tmp:/ usr / share / pear)
所以PHP会话save_path不包含在open_basedir中,但是服务器上的所有站点中的会话似乎在这个间歇性实例中工作正常。 我以为也许默认会话处理程序忽略了open_basedir,这个警告是由WP直接访问会话文件造成的。
但是从我可以看到PHP 5.2.4引入了open_basedir检查到session.save_pathconfiguration: http : //www.php.net/ChangeLog-5.php#5.2.4 (我在PHP 5.2.13)。
有任何想法吗?
为每个虚拟主机path中的会话(保留权限和所有者)创build目录(如“phptmp”),然后为每个虚拟主机添加session.save_path,upload_tmp_dir。 这是安全的方式。 如果您将阐明如何定义虚拟主机(控制面板,手动) – 我们可以给出更详细的答案。