magento can't upload large csv file - magento

this is my file upload code when i try to upload file which has size more than 75mb i can't upload file i did't get any error i also change php.ini file still its not working
$uploader = new Varien_File_Uploader('csvupload');
$uploader->setAllowedExtensions(array('csv'));
$uploader->setAllowRenameFiles(false);
$uploader->setFilesDispersion(false);
$path = Mage::getBaseDir('media') . DS . 'uploads';
$fname="customer.csv";
$uploader->save($path, $fname );
$filename = $uploader->getUploadedFileName();
can anybody give solution?

It's not Magento but PHP/server settings that are the issue. By default PHP has a much smaller max file and post size.
Check out this article on uploading large files. Via your htaccess you can change these values. Also make sure the execution_time is high enough to process the file
php_value upload_max_filesize 80M
php_value post_max_size 80M
php_value max_input_time 300
php_value max_execution_time 300

Your file name should be accurate. I guess some problem in your filename.
Replace
$fname="customer.csv";
with
$fname="/your/file/path/customer.csv";
Hope this works.

Related

Laradock Nginx throws 413 error entity too large even if size = 20M and my file is 1.5MB

I am deploying a Laravel app by using Laradock.
When testing the upload part with two different 1.5MB dummy files (.docx and .pdf), I get the following error:
I already have checked the Nginx's nginx.conf file and it does have that setting to 20MB:
...
http {
server_tokens off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 15;
types_hash_max_size 2048;
client_max_body_size 20M;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /dev/stdout;
error_log /dev/stderr;
gzip on;
gzip_disable "msie6";
...
I have reloaded the configurations:
$ sudo docker exec myapp_nginx_99 nginx -t
$ sudo docker exec myapp_nginx_99 nginx -s reload
But the error is still thrown:
413 Request Entity Too Large
Inside a php.ini file I have the following:
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
; http://php.net/file-uploads
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; http://php.net/upload-tmp-dir
;upload_tmp_dir =
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 2M
; Maximum number of files that can be uploaded via a single request
max_file_uploads = 20
I can see the maximum is 2MB, but I have tried with a 1.1MB PDF file and I still get the error.
Also, I have found out a laravel.ini right at the php-fpm directory and this is the original configuration:
date.timezone=UTC
display_errors=Off
log_errors=On
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 256M
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 20M
; Sets max size of post data allowed.
; http://php.net/post-max-size
post_max_size = 20M
max_execution_time=600
default_socket_timeout=3600
request_terminate_timeout=600
However, if I try with a 836KB file, the upload is successful. Looks like the Max file upload is 1MB, but I can't find it anywhere ...
Given that I'm already using other applications, I am using a Nginx-proxy from Evert Ramos to resolve for each domain. Looks like the problem lies here.
If I execute $ nginx -T on this proxy container, I don't see the client_max_body_size
What else am I missing to fix this?

laravel 5 cant save image

When trying to save an image on my server, in my laravel 5 project with intervention image class, with the following code :
$pathFull = public_path('images/original/brand/' . $filename);
$img = Image::make($image->getRealPath());
$img->encode('jpg')->save($pathFull);
I get the error:
NotWritableException in Image.php line 138:
Can't write image data to path
(/var/www/mydomain.com/public/images/original/brand/nanan.jpg)
So ive changed permission on the folder (that already exists) with:
sudo chmod -R 775 /var/www/mydomain.com/public/images
Ive checked the permissions they are 775 so that command works. I tried it localy (xampp) and it worked fine and the driectory paths are fine. I keep getting this error only if i use 777 i don't but thats danerous.
What else can I try to keep the server save and not use 777?
Maybe the paths are not the same. Check it out. See the original directory?
$pathFull = public_path('images/brand/thumb/' . $filename);
Can't write image data to path
(/var/www/mydomain.com/public/images/original/brand/nanan.jpg)
sudo chmod -R 775 /var/www/mydomain.com/public/images/original/brand
I have made recently a method like yours. It works fine for me. Here it is:
$image = Input::file('image');
$filename = Input::file('image')->getClientOriginalName();
$path = public_path('images/' . Auth::user()->email . '/' . $filename);
$img = Image::make($image->getRealPath());
$img->encode('jpg')->save($path);

Joomla 500 Error

I am trying to log into my Joomla administrator on my Localhost but I keep getting a 500 error.
I've tried loads of things:
Changed file permissions of:
chmod 777 error.php,
chmod 775 cache, logs adminstrator etc
I've tried uncommenting # RewriteBase / in my htaccess
I've changed the path in my configuration.php to:
public $log_path = './logs';
public $tmp_path = './tmp';
I have also checked my apached error logs and it is coming back with the following:
[22-May-2014 14:17:49 Europe/Berlin] PHP Warning: fopen(./logs/error.php): failed to open stream: No such file or directory in /Applications/XAMPP/xamppfiles/htdocs/mydir/libraries/joomla/log/loggers/formattedtext.php on line 248
[22-May-2014 14:17:49 Europe/Berlin] PHP Warning: fputs() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/mydir/libraries/joomla/log/loggers/formattedtext.php on line 254
Any help much appreciated
,
Create the directory
/Applications/XAMPP/xamppfiles/htdocs/mydir/libraries/joomla/log/loggers/logs
Then try again

WebClient powershell Download return an empty file

I am trying to download the image below into a local directory but the resulted image appears empty.
http://www.capecountyhomes.com/Homes/Images/Listings/77977723/1/Photo.jpg
This seems like a simple task but for some reason, the resulted image is somehow 0 bytes. below is my code
$wc = new-object System.Net.WebClient
$wc.DownloadFile("http://www.capecountyhomes.com/Homes/Images/Listings/77977723/1/Photo.jpg","C:/images/test.jpeg")
but the image test.jpeg in my local directory is 0 bytes.
Does anyone know what the issue could be?
Thanks
It seems to have something to do with the Headers, if you add a User-Agent the download seems to work:
$wc = new-object System.Net.WebClient
$wc.Headers["User-Agent"] = "Safari"
$wc.DownloadFile("http://www.capecountyhomes.com/Homes/Images/Listings/77977723/1/Photo.jpg","C:/images/test.jpeg")
Probably blank user agents are denied access as a measure against spam.
The url does not exist so I can't test, but my guess is the file really is 0 bytes in size.

PHP session handling errors

I have this at the very top of my send.php file:
ob_start();
#session_start();
//some display stuff
$_SESSION['id'] = $id; //$id has a value
header('location: test.php');
And the following at the very top of my test.php file:
ob_start();
#session_start();
error_reporting(E_ALL);
ini_set('display_errors', '1');
print_r($_SESSION);
When the data sends to test.php, the following is displayed:
Array ( )
Warning: Unknown: open(/var/lib/php/session/sess_isu2r2bqudeosqvpoo8a67oj02, O_RDWR) failed: Permission denied (13) in Unknown on line 0
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0
I've tried only using session_start(); but the results are the same.
Look at your message
So first thing it relate to permission
open(/var/lib/php/session/sess_isu2r2bqudeosqvpoo8a67oj02, O_RDWR) failed: Permission denied (13) in Unknown on line 0
you have to check file permission
change mode this /var/lib/php/session/
Second thing it relate to session.save_path
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0
in php.ini
[Session]
; Handler used to store/retrieve data.
session.save_handler = files
; Argument passed to save_handler. In the case of files, this is the path
; where data files are stored. Note: Windows users have to change this
; variable in order to use PHP's session functions.
;
; As of PHP 4.0.1, you can define the path as:
;
; session.save_path = "N;/path"
;
; where N is an integer. Instead of storing all the session files in
; /path, what this will do is use subdirectories N-levels deep, and
; store the session data in those directories. This is useful if you
; or your OS have problems with lots of files in one directory, and is
; a more efficient layout for servers that handle lots of sessions.
;
; NOTE 1: PHP will not create this directory structure automatically.
; You can use the script in the ext/session dir for that purpose.
; NOTE 2: See the section on garbage collection below if you choose to
; use subdirectories for session storage
;
session.save_path = /tmp/ <= HERE YOU HAVE TO MAKE SURE
; Whether to use cookies.
session.use_cookies = 1
you have to change your session.save_path setting to the accessible dir, /tmp/ for example
How to change: http://php.net/session_save_path
Being on the shared host, it is advised to set your session save path inside of your home directory but below document root
also note that
using ob_start is unnecessary here,
and I am sure you put # operator by accident and already going to remove it forever, don't you?
This was a known bug in version(s) of PHP . Depending on your server environment, you can try setting the sessions folder to 777:
/var/lib/php/session (your location may vary)
I ended up using this workaround:
session_save_path('/path/not/accessable_to_world/sessions');
ini_set('session.gc_probability', 1);
You will have to create this folder and make it writeable. I havent messed around with the permissions much, but 777 worked for me (obviously).
Make sure the place where you are storing your sessions isn't accessible to the world.
This solution may not work for everyone, but I hope it helps some people!
You can fix the issue with the following steps:
Verify the folder exists with sudo cd /var/lib/php/session. If it does not exist then sudo mkdir /var/lib/php/session or double check the logs to make sure you have the correct path.
Give the folder full read and write permissions with sudo chmod 666 /var/lib/php/session.
Rerun you script and it should be working fine, however, it's not recommended to leave the folder with full permissions. For security, files and folders should only have the minimum permissions required. The following steps will fix that:
You should already be in the session folder so just run sudo ls -l to find out the owner of the session file.
Set the correct owner of the session folder with sudo chown user /var/lib/php/session.
Give just the owner full read and write permissions with sudo chmod 600 /var/lib/php/session.
NB
You might not need to use the sudo command.
Go to your PHP.ini file or find PHP.ini EZConfig on your Cpanel and set your session.save_path to the full path leading to the tmp file, i.e: /home/cpanelusername/tmp
please make sure the session.save_path is set correctly in the php.ini. php needs read/write access to the directory to which this variable is set.
more information: http://www.php.net/manual/en/session.configuration.php#ini.session.save-path
I had the same error everything was correct like the setting the folder permissions.
It looks like an bug in php in my case because when i delete my PHPSESSID cookie it was working again so aperently something was messed up and the session got removed but the cookie was still active so php had to define the cause differently and checking first if the session file is still they and give another error and not the permission error
When using latest WHM (v66.0.23) you may go to MultiPHP INI Editor choose PHP version and set session.save_path to default i.e. /var/cpanel/php/sessions/ea-php70 instead of previous simple tmp - this helped me to get rid of such errors.
When using the header function, php does not trigger a close on the current session. You must use session_write_close to close the session and remove the file lock from the session file.
ob_start();
#session_start();
//some display stuff
$_SESSION['id'] = $id; //$id has a value
session_write_close();
header('location: test.php');
check your cpanels space.remove unused file or error.log file & then try to login your application(This work for me);
I got these two error messages, along with two others, and fiddled around for a while before discovering that all I needed to do was restart XAMPP! I hope this helps save someone else from the same wasted time!
Warning: session_start(): open(/var/folders/zw/hdfw48qd25xcch5sz9dd3w600000gn/T/sess_f8bgs41qn3fk6d95s0pfps60n4, O_RDWR) failed: Permission denied (13) in /Applications/XAMPP/xamppfiles/htdocs/foo/bar.php on line 3
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /Applications/XAMPP/xamppfiles/htdocs/foo/bar.php:3) in /Applications/XAMPP/xamppfiles/htdocs/foo/bar.php on line 3
Warning: Unknown: open(/var/lib/php/session/sess_isu2r2bqudeosqvpoo8a67oj02, O_RDWR) failed: Permission denied (13) in Unknown on line 0
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0
I'm using php-5.4.45 and I got the same problem.
If you are a php-fpm user, try edit php-fpm.conf and change listen.owner and listen.group to the right one. My nginx user is apache, so here I change these to params to apache, then it works well for me.
For apache user, I guess you should edit your fast-cgi params refer the two params I mention above.
If you use a configured vhost and find the same error then you can override the default setting of php_value session.save_path under your <VirtualHost *:80>
#
# Apache specific PHP configuration options
# those can be override in each configured vhost
#
php_value session.save_handler "files"
php_value session.save_path "/var/lib/php/5.6/session"
php_value soap.wsdl_cache_dir "/var/lib/php/5.6/wsdlcache"
Change the path to your own '/tmp' with chmod 777.

Resources