项目放到LNMP环境的服务器下,发现ueditor无法上传图片,最开始的问题是页面报“后端配置项没有正常加载,上传插件不能正常使用”。
当时Nginx的日志报的是:FastCGI sent in stderr: "Access to the script '/***/static/js/ueditor/php' has been denied (see security.limit_extensions)" while reading response header from upstream, client: ***, server: ***, request: "GET /static/js/ueditor/php/controller.php?action=config&&noCache=*** HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-cgi.sock:", host: "***", referrer: "http://***/***.html"
百度过各种方法,包括修改ecurity.limit_extensions参数、Chongqing大小写问题、填写config.json绝对路径等等,均无变化。
后来重新修改了Nginx配置,在fastcgi.conf文件开头,添加以下
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
重启生效,ueditor正常出现“点击选择图片”按钮。
选择图片,开始上传时,又发现了新的问题,页面提示上传失败,http://localhost/static/js/ueditor/php/controller.php?action=uploadimage&encode=utf-8返回Nginx 502 bad gateway。
此时Nginx的日志报的是:recv() failed (104: Connection reset by peer) while reading response header from upstream, client: ***, server: ***, request: "POST /static/js/ueditor/php/controller.php?action=uploadimage&encode=utf-8 HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-cgi.sock:", host: "***", referrer: "http://localhost/static/js/ueditor/dialogs/image/image.html"
又是尝试了各种方法什么图片路径、什么pm.max_children、request_terminate_timeout各种参数,毫无变化。
后来才发现图片其实是上传成功了,在服务器上是能找到的,只是提示上传失败;发现了这一点,才找到了解决方法。
修改Uploader.class.php文件:
将以下内容iconv('unicode', 'utf-8', $this -> stateMap['ERROR_TYPE_NOT_ALLOWED'])
替换为mb_convert_encoding($this->stateMap['ERROR_TYPE_NOT_ALLOWED'],'utf-8','auto')
OK,终于成功了。
reference: