如何解决服务器防跨站、防跨目录功能导致的报错问题
造成报错的原因是因为服务器开启了防跨站、防跨目录的功能,关闭功能即可。
Apache
Apache是比较成熟的中间件,我们可以通过修改Apache安装目录下的vhost.conf来达到防止跨站跨目录的目的。在网站配置中加入以下代码
-
- <VirtualHost *:80>;
- php_admin_value open_basedir "/www/wwwroot/:/tmp/:/proc/";
- </VirtualHost>;
复制代码
需要把/www/wwwroot/改为你网站所在目录的绝对路径。
值得注意的是如果使用这种方式,那么虚拟用户就不再自动继承php.ini中的open_basedir值了,这样会失去灵活性。
Nginx
Nginx也可以通过修改配置文件来达到防跨站跨目录的效果。
-
- fastcgi_param PHP_VALUE "open_basedir=$document_root:/tmp/:/proc/";
复制代码
通常Nginx的站点配置文件里用了include fastcgi.conf,我们可以把这行加在fastcgi.conf里就OK了。 如果某个站点需要单独设置额外的目录,把上面的代码写在include fastcgi.conf;这行下面就OK了,会把fastcgi.conf中的设置覆盖掉。 这种方式的设置需要重启nginx后生效。
|