PHP post 通过 Yii2 和 redactor 文本编辑器生成的文件为空 $_FILES(未上传)
PHP post file through Yii2 & redactor text editor results in empty $_FILES (nothing uploaded)
详情
详细信息是我正在使用 https://github.com/yiidoc/yii2-redactor 在我的 Yii2 应用程序中启用文本编辑器。
view.php
<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>
<?= $form->field($model, 'text')->widget(\yii\redactor\widgets\Redactor::className()) ?>
web.php
'redactor' => [
'class' => 'yii\redactor\RedactorModule',
'uploadDir' => '/uploads/',
'uploadUrl' => '/uploads/',
'imageUploadRoute' => ['/uploads/'],
'fileUploadRoute' => ['/uploads/'],
'imageManagerJsonRoute' => ['/uploads/'],
'fileManagerJsonRoute' => ['/uploads/'],
'uploadUrl' => '/uploads/',
'imageAllowExtensions'=>['jpg','png','gif']
]
uploads/index.php
如此处所述 uploads.php http://imperavi.com/redactor/docs/upload-images/
root .htaccess
<IfModule mod_autoindex.c>
Options -Indexes
</IfModule>
<IfModule mod_rewrite.c>
RewriteCond %{SCRIPT_FILENAME} -d
RewriteCond %{SCRIPT_FILENAME} -f
RewriteRule "(^|/)\." - [F]
</IfModule>
<FilesMatch "(\.(bak|bat|config|sql|fla|md|psd|ini|log|sh|inc|swp|dist)|~|init|composer\.json|composer\.lock)$">
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>
<IfModule php5_module>
php_value session.cookie_httponly true
</IfModule>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
我的上传文件夹中暂时没有 .htaccess。
file_uploads = 开启,post_max_size = 8M,upload_max_filesize = 8M 在 php.ini
method="POST" 由 Yii2 在表单中自动提供,我提供了 enctype="multipart/form-data"
复制
我尝试上传一个文件(只有几 kb),当我 select 上传它时,会弹出一条警告消息
The page at localhost says
true
通过调试我可以看到它通过 localhost/blah/uploads/index.php 文件并且 $_FILES 变量是空的。首先,post 向 localhost/blah/uploads 发出请求并获得 301 永久移动,我可以在其中看到该文件,然后是来自 localhost/blah/uploads/ 的 200 OK GET。视图所在的引用者是另一个 url,比方说 localhost/blah/posts/update/1.
抱歉这么久了 post 但我想说的很透彻,并且尝试了很多选项都没有解决问题。先谢谢大家了!
3 天后,我才发现,在这里问了这个问题后,我必须做:
web.php
'redactor' => [
'class' => 'yii\redactor\RedactorModule',
'uploadDir' => '/uploads/index.php',
'uploadUrl' => '/uploads/index.php',
'imageUploadRoute' => ['/uploads/index.php'],
'fileUploadRoute' => ['/uploads/index.php'],
'imageManagerJsonRoute' => ['/uploads/index.php'],
'fileManagerJsonRoute' => ['/uploads/index.php'],
'imageAllowExtensions'=>['jpg','png','gif']
]
显然它需要用全名来处理实际页面!
详情
详细信息是我正在使用 https://github.com/yiidoc/yii2-redactor 在我的 Yii2 应用程序中启用文本编辑器。
view.php
<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>
<?= $form->field($model, 'text')->widget(\yii\redactor\widgets\Redactor::className()) ?>
web.php
'redactor' => [
'class' => 'yii\redactor\RedactorModule',
'uploadDir' => '/uploads/',
'uploadUrl' => '/uploads/',
'imageUploadRoute' => ['/uploads/'],
'fileUploadRoute' => ['/uploads/'],
'imageManagerJsonRoute' => ['/uploads/'],
'fileManagerJsonRoute' => ['/uploads/'],
'uploadUrl' => '/uploads/',
'imageAllowExtensions'=>['jpg','png','gif']
]
uploads/index.php
如此处所述 uploads.php http://imperavi.com/redactor/docs/upload-images/
root .htaccess
<IfModule mod_autoindex.c>
Options -Indexes
</IfModule>
<IfModule mod_rewrite.c>
RewriteCond %{SCRIPT_FILENAME} -d
RewriteCond %{SCRIPT_FILENAME} -f
RewriteRule "(^|/)\." - [F]
</IfModule>
<FilesMatch "(\.(bak|bat|config|sql|fla|md|psd|ini|log|sh|inc|swp|dist)|~|init|composer\.json|composer\.lock)$">
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>
<IfModule php5_module>
php_value session.cookie_httponly true
</IfModule>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
我的上传文件夹中暂时没有 .htaccess。
file_uploads = 开启,post_max_size = 8M,upload_max_filesize = 8M 在 php.ini
method="POST" 由 Yii2 在表单中自动提供,我提供了 enctype="multipart/form-data"
复制
我尝试上传一个文件(只有几 kb),当我 select 上传它时,会弹出一条警告消息
The page at localhost says
true
通过调试我可以看到它通过 localhost/blah/uploads/index.php 文件并且 $_FILES 变量是空的。首先,post 向 localhost/blah/uploads 发出请求并获得 301 永久移动,我可以在其中看到该文件,然后是来自 localhost/blah/uploads/ 的 200 OK GET。视图所在的引用者是另一个 url,比方说 localhost/blah/posts/update/1.
抱歉这么久了 post 但我想说的很透彻,并且尝试了很多选项都没有解决问题。先谢谢大家了!
3 天后,我才发现,在这里问了这个问题后,我必须做:
web.php
'redactor' => [
'class' => 'yii\redactor\RedactorModule',
'uploadDir' => '/uploads/index.php',
'uploadUrl' => '/uploads/index.php',
'imageUploadRoute' => ['/uploads/index.php'],
'fileUploadRoute' => ['/uploads/index.php'],
'imageManagerJsonRoute' => ['/uploads/index.php'],
'fileManagerJsonRoute' => ['/uploads/index.php'],
'imageAllowExtensions'=>['jpg','png','gif']
]
显然它需要用全名来处理实际页面!