我正在努力尝试实现一些非常简单的事情。首先,我有以下上传表格,在OS X + XAMPP下完美运行。将此脚本移至 WAMP + Windows Server 时,我在文件上传过程中遇到严重问题。我正在使用Codeigniter。
public function importExcel () {
$config['upload_path'] = 'upload/';
$config['allowed_types'] = 'xls';
$config['max_size'] = '0';
$config['overwrite'] = FALSE;
$this->load->library('upload', $config);
if (!($this->upload->do_upload())) {
echo $this->upload->display_errors();
}
$upload_data = $this->upload->data();
$data['filename'] = $upload_data['file_name'];
}
这是我的简单功能。上传文件夹位于 www / mywebsite / 下。 Codeigniter的config.php文件配置正确。
当我尝试上传xls文件时,服务器崩溃(中断其连接)。这意味着我得到this page错误: ERR_CONNECTION_RESET ,而不是向我显示上传错误。
我可以这么说:
以下是我的尝试:
这是我实际的.htaccess文件,以防万一。
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
RewriteBase /websitefolder/
我再说一遍,相同的代码在OS X + XAMPP下运行良好,具有相同的目录结构。
编辑2:我的PHP错误日志完全为空。这些是我在尝试上传时添加到Apace错误日志中的行。
[Tue May 27 14:22:54 2014] [notice] Parent: child process exited with status 255 -- Restarting.
[Tue May 27 14:22:56 2014] [notice] Apache/2.2.21 (Win64) mod_ssl/2.2.21 OpenSSL/1.0.0d PHP/5.3.8 configured -- resuming normal operations
[Tue May 27 14:22:56 2014] [notice] Server built: Sep 24 2011 19:57:51
[Tue May 27 14:22:56 2014] [notice] Parent: Created child process 4736
[Tue May 27 14:22:56 2014] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Tue May 27 14:22:56 2014] [notice] Child 4736: Child process is running
[Tue May 27 14:22:56 2014] [notice] Child 4736: Acquired the start mutex.
[Tue May 27 14:22:56 2014] [notice] Child 4736: Starting 64 worker threads.
[Tue May 27 14:22:56 2014] [notice] Child 4736: Starting thread to listen on port 80.
[Tue May 27 14:22:56 2014] [notice] Child 4736: Starting thread to listen on port 80.
编辑3:使用 w3schools sample code 测试了非Codeigniter文件上传。我明白了:
Upload: test.php
Type: application/octet-stream
Size: 26.90234375 kB
Stored in: C:\Wamp\tmp\phpAAB5.tmp
但是当我进入C:\ Wamp \ tmp时,我看不到该文件。但是还有其他同类临时文件。通过使用保存上传文件下的代码,上传工作正常,我可以找到我上传的文件。
我很绝望,因为我需要这个给客户。有帮助吗?谢谢。
答案 0 :(得分:1)
$config['upload_path'] = FCPATH . 'upload/';
路径需要设置为绝对路径。
RewriteEngine on
RewriteBase /websitefolder/
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
这是应该怎么看你的.htaccess 并且不要忘记在config.php中删除index.php
$config['base_url'] = '';
答案 1 :(得分:1)
写
RewriteBase /
如果它托管在root上,则另外明智地添加目录名称,如
RewriteBase / testfolder /
答案 2 :(得分:0)
问题可能与CodeIgniter库有关。使用官方文档提供的相同代码,我仍然无法上传xls文档,但我能够通过使用相应的标准PHP上传表单来实现这一目的。
Codeigniter无法上传文件并执行此检查:
if (!($this->upload->do_upload())) {
echo $this->upload->display_errors();
}
Web应用程序崩溃而不是返回错误。如果我禁用此检查,我没有错误,但显然文件没有上传。
我会将此Stackoverflow讨论报告给Codeigniter社区,看看他们是否可以确认我刚写的内容。