Error reported in Yii 2.0: yii\base\errorexception: undefined index: http_accept
1. An error is reported in Yii 2.0: yii\base\ErrorException: undefined index: http_accept, as shown in Figure 1
2. Check the runtime log file: /api/runtime/logs/app.log
2020-01-20 15:09:08[10.42.129.69][1][-][error][yii\base\ErrorException:8]Yii\Base\ErrorException: undefined index: http_accept in /mcloud/www/pcs-api/common/behaviors/requestlogbehavior.php:45
stack trace:
#0 /mcloud/www/pcs-api/common/behaviors/requestlogbehavior.php(45): Yii\Base\ErrorHandler->HandleError(8,undefined index...,/mcloud/www/pcs...,45, array)
#1[internal function]: Common\Behaviors\RequestLogBehavior->AfterRequest(object(yii\base\event))
#2 /mcloud/www/pcs-api/vendor/yiisoft/yii2/base/component.php(627): call_user_func(array, Object(yii\base\event))
#3 /mcloud/www/pcs-api/vendor/yiisoft/yii2/base/application.php(389): yii\base\component->trigger(afterRequest)
#4 /mcloud/www/pcs-api/api/web/index.php(17): yii\base\application->run()
#5 {main}
2020-01-20 15:09:08[10.42.129.69][1][-][warning][yii\debug\Module::checkAccess]Access to debugger is denied due to ip address restriction. The requesting ip address is 10.42.129.69
2020-01-20 15:09:07[10.42.129.69][1][-][info][application]$_get =[
login_id=>B871D55257295F1B779EF33FE803E37D
login_tid=>3EEC10B739B09B64AAC91FDE04297AF1
]#ATFP_CLOSE_Translate_span#
$_post =[
scenerio=>default
]#ATFP_CLOSE_Translate_span#
$_files =[
files=> [
name=> [
0 =>Video_20190718_151652.mp4
]#ATFP_CLOSE_Translate_span#
type=>[
0 =>*/*
]#ATFP_CLOSE_Translate_span#
tmp_name=>[
0 =>/tmp/phpxieqyp
]#ATFP_CLOSE_Translate_span#
Error=>[
0 => 0
]#ATFP_CLOSE_Translate_span#
Size=>[
0 => 1529188
]#ATFP_CLOSE_Translate_span#
]
]
$_cookie =[]
$_server =[
user=>nginx
home=>/var/cache/nginx
http_user_agent=>okhttp/3.12.0
http_accept_encoding=>gzip
http_content_type=>multipart/form-data; boundary=893C73F9-C868-4372-80E5-13761FDA8511
HTTP_X_REAL_IP=>223.85.203.162
http_x_forwarded_port=>8000
http_x_forwarded_host=>pcs.wjdev.chinamcloud.cn
http_x_forwarded_proto=>http
http_x_forwarded_for=>140.143.139.242
http_content_length=>1529523
http_host=>api.pcs.wjdev.chinamcloud.cn
redirect_status=>200
SERVER_NAME=>api.pcs.wjdev.chinamcloud.cn
SERVER_PORT=>80
SERVER_ADDR=>10.42.137.79
REMOTE_PORT=>51094
REMOTE_ADDR=>10.42.129.69
server_software=>nginx/cnginx
Gateway_Interface=>CGI/1.1
request_scheme=>http
server_protocol=>http/1.0
document_root=>/mcloud/www/pcs-api/api/web
document_uri=>/index.php
request_uri=>/v1/mobile/assets/upload?login_id=b871d55257295f1b779ef3 3FE803E37D&login_tid=3EEC10B739B09B64AAC91FDE04297AF1
SCRIPT_NAME=>/index.php
content_length=>1529523
content_type=>multipart/form-data; boundary=893C73F9-C868-4372-80E5-13761FDA8511
request_method=>post
query_string=>login_id=B871D55257295F1B779EF33FE803E37D&AM p;login_tid=3eec10b739b09b64aac91fde04297af1
script_filename=>/mcloud/www/pcs-api/api/web/index.php
FCGI_ROLE=>Responder
php_self=>/index.php
request_time_float=> 1579504147.3086
request_time=> 1579504147
]#ATFP_CLOSE_Translate_span#
2020-01-20 15:12:42[10.42.129.69][1][-][warning][yii\debug\Module::checkAccess]Access to debugger is denied due to ip address restriction. The requesting ip address is 10.42.129.69
2020-01-20 15:12:42[10.42.129.69][1][-][info][application]$_get =[
login_id=>B871D55257295F1B779EF33FE803E37D
login_tid=>E3FF923155266BB1372E1E525C9E64F8
]#ATFP_CLOSE_Translate_span#
$_post =[
scenerio=>default
]#ATFP_CLOSE_Translate_span#
$_files =[
files=> [
name=> [
0 =>IMG_20160924_140140.jpg
]#ATFP_CLOSE_Translate_span#
type=>[
0 =>image/jpeg
]#ATFP_CLOSE_Translate_span#
tmp_name=>[
0 =>/tmp/phpzugigv
]#ATFP_CLOSE_Translate_span#
Error=>[
0 => 0
]#ATFP_CLOSE_Translate_span#
Size=>[
0 => 2891230
]#ATFP_CLOSE_Translate_span#
]
]
$_cookie =[]
$_server =[
user=>nginx
home=>/var/cache/nginx
http_accept_encoding=>gzip, deflate, br
http_content_type=>multipart/form-data; boundary=----------------------688749261587533988420647
http_postman_token=>553EB424-916F-4AB8-9585-402E260BEE25
http_cache_control=>no-cache
http_accept=>*/*
http_user_agent=>PostmanRuntime/7.22.0
HTTP_X_REAL_IP=>223.85.203.162
http_x_forwarded_port=>8000
http_x_forwarded_host=>pcs.wjdev.chinamcloud.cn
http_x_forwarded_proto=>http
http_x_forwarded_for=>140.143.139.242
http_content_length=>2891568
http_host=>api.pcs.wjdev.chinamcloud.cn
redirect_status=>200
SERVER_NAME=>api.pcs.wjdev.chinamcloud.cn
SERVER_PORT=>80
SERVER_ADDR=>10.42.137.79
REMOTE_PORT=>52572
REMOTE_ADDR=>10.42.129.69
server_software=>nginx/cnginx
Gateway_Interface=>CGI/1.1
request_scheme=>http
server_protocol=>http/1.0
document_root=>/mcloud/www/pcs-api/api/web
document_uri=>/index.php
request_uri=>/v1/mobile/assets/upload?login_id=b871d55257295f1b779ef3 3FE803E37D&login_tid=E3FF923155266BB1372E1E525C9E64F8
SCRIPT_NAME=>/index.php
content_length=>2891568
content_type=>multipart/form-data; boundary=----------------------688749261587533988420647
request_method=>post
query_string=>login_id=B871D55257295F1B779EF33FE803E37D&AM p;login_tid=E3FF923155266bb1372e1e525c9e64f8
script_filename=>/mcloud/www/pcs-api/api/web/index.php
FCGI_ROLE=>Responder
php_self=>/index.php
request_time_float=> 1579504362.4863
request_time=> 1579504362
]#ATFP_CLOSE_Translate_span#
3. The log information of the two requests, found when $_SERVER[‘HTTP_USER_AGENT’]When the value is okhttp/3.12.0, $_server[‘HTTP_ACCEPT’]Does not exist
http_accept=>*/* http_user_agent=>PostmanRuntime/7.22.0 http_user_agent=>okhttp/3.12.0
4. Ask the Android client to explicitly declare accept in headers when $_server[‘HTTP_USER_AGENT’]When the value is okhttp/3.12.0, $_server[‘HTTP_ACCEPT’]The value is application/json; version=10.4. No more errors.
2020-01-20 15:39:31[10.42.129.69][1][-][warning][yii\debug\Module::checkAccess]Access to debugger is denied due to ip address restriction. The requesting ip address is 10.42.129.69 2020-01-20 15:39:31[10.42.129.69][1][-][info][application]$_get =[ login_id=>B871D55257295F1B779EF33FE803E37D login_tid=>3EEC10B739B09B64AAC91FDE04297AF1 ]#ATFP_CLOSE_Translate_span# $_post =[] $_files =[ files=> [ name=> [ 0 =>PictureSelector_20180906_122206.mp4 ]#ATFP_CLOSE_Translate_span# type=>[ 0 =>*/* ]#ATFP_CLOSE_Translate_span# tmp_name=>[ 0 =>/tmp/phpw8js3t ]#ATFP_CLOSE_Translate_span# Error=>[ 0 => 0 ]#ATFP_CLOSE_Translate_span# Size=>[ 0 => 11732395 ]#ATFP_CLOSE_Translate_span# ] ] $_cookie =[] $_server =[ user=>nginx home=>/var/cache/nginx http_user_agent=>okhttp/3.12.0 http_accept_encoding=>gzip http_content_type=>multipart/form-data; boundary=B723009a-9c5d-4f65-a476-09e38a4caa9c http_accept=>application/json; version=10.4 HTTP_X_REAL_IP=>223.85.203.162 http_x_forwarded_port=>8000 http_x_forwarded_host=>pcs.wjdev.chinamcloud.cn http_x_forwarded_proto=>http http_x_forwarded_for=>140.143.139.242 http_content_length=>11732622 http_host=>api.pcs.wjdev.chinamcloud.cn redirect_status=>200 SERVER_NAME=>api.pcs.wjdev.chinamcloud.cn SERVER_PORT=>80 SERVER_ADDR=>10.42.137.79 REMOTE_PORT=>33416 REMOTE_ADDR=>10.42.129.69 server_software=>nginx/cnginx Gateway_Interface=>CGI/1.1 request_scheme=>http server_protocol=>http/1.0 document_root=>/mcloud/www/pcs-api/api/web document_uri=>/index.php request_uri=>/v1/mobile/assets/upload?login_id=b871d55257295f1b779ef3 3FE803E37D&login_tid=3EEC10B739B09B64AAC91FDE04297AF1 SCRIPT_NAME=>/index.php content_length=>11732622 content_type=>multipart/form-data; boundary=B723009a-9c5d-4f65-a476-09e38a4caa9c request_method=>post query_string=>login_id=B871D55257295F1B779EF33FE803E37D&AM p;login_tid=3eec10b739b09b64aac91fde04297af1 script_filename=>/mcloud/www/pcs-api/api/web/index.php FCGI_ROLE=>Responder php_self=>/index.php request_time_float=> 1579505971.373 request_time=> 1579505971 ]#ATFP_CLOSE_Translate_span#
5. Prepare to be on the server, make a judgment, when there is no $_server[‘HTTP_ACCEPT’]when using $_SERVER[‘HTTP_ACCEPT’]. Edit /common/behaviors/requestLogBehavior.php
$message =[ url=> $url, request_query_params=> $requestQueryParams, request_body_params=> $requestBodyParams, user_id=> $userid, $_server=> [ http_accept_language=> $_server[http_accept_language]#atfp_close_translate_span# ??, http_accept=> $_server['HTTP_ACCEPT']??, http_host=> $_server['HTTP_HOST'], REMOTE_ADDR=> $_server['REMOTE_ADDR']??, request_uri=> $_server['REQUEST_URI'], request_method=> $_server['REQUEST_METHOD'], content_type=> $_server['CONTENT_TYPE']??, ], ];
