500内部服务器错误的CSV导入w/大照片


500 Internal Server Error on CSV Import w/ Large Photos

我在用CSV文件导入产品时遇到了麻烦。

我试图上传一个CSV文件与大约1400个产品…大多数都有三张左右的图片. .. .但是这些图片非常大,有3-4兆字节。到目前为止,在测试过程中,我只尝试过从一个包含5个项目的CSV文件导入。

我最初是得到一个错误,在prestshop表明我的产品的图片无法复制。产品是进口的,只是没有照片。我对此进行了研究,发现PHP.INI文件需要更新。我使用以下参数完成了此操作:

<?php
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
memory_limit = 256M
max_execution_time = 120
max_input_vars = 3000;
suhosin.post.max_vars = 3000;
suhosin.request.max_vars = 3000;

?>

我的PHP信息文件在这里:www.gbamedical.com/info.php

现在我得到一个500内部服务器错误。错误日志中的实际错误如下所示:

[Tue Jul 22 23:21:19 2014] [5435820] [fcgid:warn] [client 97.115.27.65:60638] mod_fcgid: read data timeout in 120秒,referer http://www.gbamedical.com/shoppe/05ad01min05/index.php?controller=AdminImport&token=62fefdea84f98bf2f436dafc040b6c1f

[Tue Jul 22 23:21:19 2014] [5435820] [core:error] [client 97.115.27.65:60638]脚本输出结束前的头:index.php, referer http://www.gbamedical.com/shoppe/05ad01min05/index.php?controller=AdminImport&token=62fefdea84f98bf2f436dafc040b6c1f

我做错了什么?我已经尝试过小一些的图片,它可以工作,但是我使用的供应商的数据源没有1400个项目的小图片,这是一个怪物的工作,使它们更小。

对于您可能提供的任何帮助,事先表示感谢。

特雷福

对于您的测试环境,将图像添加到本地服务的url并更新csv以反映该更改

http://localhost/importimages/image_name.jpg

然后在您的生产环境中执行类似的操作。

我的第一个想法是set_time_limit(0)将修复此问题,但流操作不计入执行时间(除非在windows上),因此取决于您如何从prestashop下载文件,它可能实际上不计入执行时间(我猜fopen()不会)。

显然,这是fcgid特有的问题。您需要(取决于您的版本)将此添加到fcgid.conf:

FcgidIOTimeout 180

原来是IPCCommTimeout。该值以秒为单位(手册在这里)。

看看这篇文章:

https://serverfault.com/questions/80929/disable-the-timeouts-on-apache-httpd-and-fastcgi

你需要传递给fastcgi进程的参数是:-idle-timeout 360

你可以调整值(这里:360)以适应你的需要

调整/etc/apache2/mods-enabled/fastcgi.conf

将前面的参数附加到FastCgiExternalServer

我的配置:

<IfModule mod_fastcgi.c>
   AddType application/x-httpd-fastphp5 .php
   Action application/x-httpd-fastphp5 /php5-fcgi
   Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
   FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization -idle-timeout 360
   <Directory /usr/lib/cgi-bin>
      Require all granted
   </Directory>
</IfModule>

这会让你的apache等待更长时间来完成fastcgi进程。希望对大家有所帮助

我也有同样的问题。我使用Centos 6和fcgi。我在/etc/httpd/conf.d/fcgid.conf

MaxRequestLen 1073741824
FcgidBusyTimeout 6000

当我导入csv时我的导入进程作为后台进程