2012-05-13 48 views
0

我尝试创建一个Zend框架的定制提供,在这里:Zend框架PHP - >真实路径()

if($module == 'default'){ 
     $modelsPath = dirname(__FILE__) . '/../application/models'; 
     $filePath = realpath($modelsPath) . '/' . $name . '.php'; 
    } else 
    if(!$module == ''){ 
     $modelsPath = dirname(__FILE__) . '/../application/' . $module . '/models'; 
     $filePath = realpath($modelsPath) . '/' . $name . '.php'; 
    } else { 
     die('Please enter a module!'); 
    } 

当我我尝试创建的文件,当它的默认模块一切正常的路径,但是当为前。模块是否是其他词,无论实际路径返回false?!错误在哪里?

+0

进行调试,如果路径不存在,则realpath将返回false。 – goat

+0

当realpath()返回false时,很简单,你的路径(目录)不存在,或者你传递了一个错误的路径。 –

+0

谢谢!我忘了模块文件夹:] – fre2ak

回答

0

取出php manual的:

真实路径()返回失败FALSE,例如如果该文件不存在。

注:

运行脚本必须具有层次结构中的所有目录可执行权限,否则的realpath()将返回FALSE。

所以最可能的问题是文件夹权限或路径是错误的!

2

尝试使用APPLICATION_PATH常量。

if($module == 'default'){ 
     $modelsPath = APPLICATION_PATH . '/models'; 
     $filePath = realpath($modelsPath) . '/' . $name . '.php'; 
    } else 
    if(!$module == ''){ 
     $modelsPath = APPLICATION_PATH . '/' . $module . '/models'; 
     $filePath = realpath($modelsPath) . '/' . $name . '.php'; 
    } else { 
     die('Please enter a module!'); 
    } 
0

通过简单的回显$ filePath仔细检查路径是否存在。如果检查结果没有问题,请确保“用户”(例如apache,www-data)具有足够的权限。如果您不确定服务器的运行方式,您可以通过回显whoami