![PHP- fopen-open_basedir 限制生效](https://linux22.com/image/565698/PHP-%20fopen-open_basedir%20%E9%99%90%E5%88%B6%E7%94%9F%E6%95%88.png)
我已将我的网站移至另一台托管服务器。但是,fopen() 函数存在一点问题。每次运行它时,都会出现以下错误:
警告:file_exists() [function.file-exists]:open_basedir 限制生效。文件(/home/www-virtual/www-username/www/bindata/gallery/GAL34e81b4adce22091c6ee31c71055e181.jpg)不在允许的路径内:(/www/default/www:/www/username_www:/tmp:/usr/local/lib/php:/usr/local/php-5.2/lib)位于 /www/username_www/www/frontend/gallery/GalleryPage.php5 的第 112 行
我无法对 PHP 脚本做任何事情,因为它是 ionCube 编码的。
那么还剩下什么要做呢?
答案1
立即更换托管公司!
如果他们不能正确配置 open_basedir,谁知道还有什么可怕的事情在等着他们(是的,他们可能有必要实施全面限制 - 但如果这里的情况是这样,为什么他们要将别人的目录列入白名单)。
答案2
一个可能的答案(来自堆栈溢出)是设置 PHP 的例外打开basedir在 .htaccess 文件中
<Directory /var/www/vhosts/domain.tld/httpdocs>
php_admin_value open_basedir "/var/www/vhosts/domain.tld/httpdocs:/var/www/vhosts/domain.tld/zend"
</Directory>
你也可以完全删除限制
<Directory /var/www/vhosts/domain.tld/httpdocs>
php_admin_value open_basedir none
</Directory>