Php Yii-setPathOfAlias内的getPathOfAlias

Php Yii-setPathOfAlias内的getPathOfAlias,php,yii,Php,Yii,我正在尝试将Yii中的别名路径设置为中的文件上载目录 testweb -… -受保护的 -… -我的上传 所以我在protected/config/main.php中放了如下内容: Yii::setPathOfAlias('upload_dir', Yii::getPathOfAlias('webroot') . '/myupload'); 但是当我回显别名时,我只得到“/myupload” echo Yii::getPathOfAlias('upload_dir'); //only retu

我正在尝试将Yii中的别名路径设置为中的文件上载目录

testweb
-…
-受保护的
-…
-我的上传

所以我在protected/config/main.php中放了如下内容:

Yii::setPathOfAlias('upload_dir', Yii::getPathOfAlias('webroot') . '/myupload');
但是当我回显别名时,我只得到“/myupload”

echo Yii::getPathOfAlias('upload_dir'); //only returns /myupload

用这样的东西

Yii::setPathOfAlias('upload_dir', dirname(__FILE__) . DIRECTORY_SEPARATOR."..".DIRECTORY_SEPARATOR."myupload");

您不能在
main.php
配置文件中调用
getPathFalias()
,因为路径别名是在of中创建的。但是在包含
main.php
时,还没有调用构造函数

配置路径别名的正确方法是使用
main.php
中的
alias
属性。在您的情况下,您可以:

return array(
    'aliases' => array(
        'upload_dir' => 'webroot.myupload',
    ),
    ...

还要注意的是,您可以(也应该)对别名使用点表示法。

在哪个文件中尝试?您可能是在
webroot
尚未定义的某个点上执行此操作的(虽然这发生得很早)。我在视图文件中回显了Yii::getPathFalias('webroot'),它返回了c:/xampp/htdocs/testweb/Yeah,但问题是,您在哪里调用
setPathFalias()
。如果我理解正确,我将Yii::setPathFalias放在protected/config/main.php中?它返回了c:\xampp\htdocs\testweb\protected\config/。/../myupload:(我的应用程序我以为你在使用linux只是将斜杠改为windows变体。或者你可以使用我的最新代码不是我真正想要的,它返回了protected\config\..\..\..\myupload。我想要protected\myupload,但谢谢Michael给出了答案:)两者的意思是一样的。如果你只想在受保护的范围内,那么两个\…\就足够了。是的,他的答案是正确的,但我更喜欢在不使用其他别名的情况下设置它,因为它与样板模板(如yiiboolerplate YiiBooster等)一起工作。谢谢,你的代码可以工作,而不是使用setPathFalias()。在数组中设置别名后,我使用getPathFalias()获取/回显别名