Php $\u服务器[';服务器名称';]未与Yii框架中的控制台应用程序一起工作

Php $\u服务器[';服务器名称';]未与Yii框架中的控制台应用程序一起工作,php,yii,console-application,Php,Yii,Console Application,当我尝试运行photoResizer命令时,比如/var/www/myProject/proted/yiic photoResizer 我得到了这个错误 PHP Error[8]: Undefined index: SERVER_NAME in file /var/www/myProject/protected/components/UploadHandler.php at line 190 #0 /var/www/myProject/protected/components/UploadHan

当我尝试运行photoResizer命令时,比如/var/www/myProject/proted/yiic photoResizer

我得到了这个错误

PHP Error[8]: Undefined index: SERVER_NAME
in file /var/www/myProject/protected/components/UploadHandler.php at line 190
#0 /var/www/myProject/protected/components/UploadHandler.php(45):  
UploadHandler->get_full_url()
#1 /var/www/myProject/protected/commands/PhotoResizerCommand.php(37):   
UploadHandler->__construct()
#2 /var/www/myProject/framework/console/CConsoleCommandRunner.php(71):    
PhotoResizerCommand->run()
#3 /var/www/myProject/framework/console/CConsoleApplication.php(92): 
CConsoleCommandRunner->run()
#4 /var/www/myProject/framework/base/CApplication.php(180): 
CConsoleApplication->processRequest()
#5 /var/www/myProject/framework/yiic.php(33): CConsoleApplication->run()
#6 /var/www/myProject/protected/yiic.php(7): require_once()
#7 /var/www/myProject/protected/yiic(4): require_once()
我需要解决这个问题,或者通过yii框架中的命令行运行php脚本的任何替代方案


谢谢。

很明显,从命令行运行应用程序时没有“服务器”,因此您不能将该变量用于任何用途。显然,
UploadHandler
是硬编码的,期望在web请求的上下文中执行,以处理请求中上载的文件(您知道,这是有意义的)。由于您不在web请求上下文中,因此它会失败。

很明显,从命令行运行应用程序时没有“服务器”,因此您不能将该变量用于任何用途。显然,
UploadHandler
是硬编码的,期望在web请求的上下文中执行,以处理请求中上载的文件(您知道,这是有意义的)。由于您不在web请求上下文中,它将失败。

您可以在components数组中的config/console.php中添加

'request' => array(
    'hostInfo' => 'http://localhost',
    'baseUrl' => '',
    'scriptUrl' => '',
),
并添加urlManager

'urlManager' => array(
    'urlFormat' => 'path',
    'showScriptName' => false,
    'rules' => array(
        '<controller:\w+>' => '<controller>/index',
        '<controller:\w+>/<id:\d+>' => '<controller>/view',
        '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
        '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
    ),
),
'urlManager'=>数组(
“urlFormat”=>“路径”,
'showScriptName'=>false,
'规则'=>数组(
''=>''/index',
“/”=>“/视图”,
'//' => '/',
'/' => '/',
),
),

您可以在components数组中添加config/console.php

'request' => array(
    'hostInfo' => 'http://localhost',
    'baseUrl' => '',
    'scriptUrl' => '',
),
并添加urlManager

'urlManager' => array(
    'urlFormat' => 'path',
    'showScriptName' => false,
    'rules' => array(
        '<controller:\w+>' => '<controller>/index',
        '<controller:\w+>/<id:\d+>' => '<controller>/view',
        '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
        '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
    ),
),
'urlManager'=>数组(
“urlFormat”=>“路径”,
'showScriptName'=>false,
'规则'=>数组(
''=>''/index',
“/”=>“/视图”,
'//' => '/',
'/' => '/',
),
),

错误发生在您的类中。试着在那里修复它。你会在你的类中得到错误。试着把它修好。