PHP Doctrine和is_dir():open_basedir错误

时间:2015-07-02 23:01:16

标签: php doctrine-orm

我在第三级域名上收到错误:

  

警告:is_dir():open_basedir限制生效。文件(/ tmp)是   不在允许的路径内

它出现在:第188行的[path-to-doctrine] /Doctrine/ORM/Proxy/ProxyFactory.php

这是:

    if ( ! is_dir($parentDirectory)) {
        if (false === @mkdir($parentDirectory, 0775, true)) {                
            throw ProxyException::proxyDirectoryNotWritable();
        }
    } else if ( ! is_writable($parentDirectory)) {
        throw ProxyException::proxyDirectoryNotWritable();
    }

在本地服务器上没有错误。它只发生在实时服务器上。

我需要改变什么?

2 个答案:

答案 0 :(得分:2)

看起来你的脚本正在使用该代码进行缓存,出于安全原因,你无法直接访问“/ tmp”目录。您需要将该目录路径更改为新的本地路径,您的脚本具有所需的操作权限。

答案 1 :(得分:0)

bader提供的解释是正确的。

要修复它,需要在Doctrine设置中更改代理路径:

$config = Setup::createAnnotationMetadataConfiguration(array(__DIR__."/src"), $isDevMode);
$config->setProxyDir('path-to-cache');