当我尝试运行我的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脚本的任何替代方法。
感谢。
答案 0 :(得分:5)
很明显,没有"服务器"从命令行运行应用程序时,您不能将该变量用于任何事情。显然,UploadHandler
被硬编码为期望在Web请求的上下文中执行以处理在请求中上传的文件(您知道这是有道理的)。由于您不在Web请求上下文中,因此失败。
答案 1 :(得分:1)
您可以在components array
中添加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>',
),
),