Uploading files wont work on production server - php

I have a php script which uploads images to a temporary folder on the server.
This works on my local computer with the local (virtual) server. (wampserver).
However, on the production server (linux) I cant get it working.
Everything is loading as it should, except for that the file doesn't show up on the server.
My Q is, is there anything I should think about when moving to a production server with uploading images or files?
I have set permissions on the folder where the images are supposed to go to 777 and also the php-code which uploads them to 777.
Thanks

is there anything I should think about
when moving to a production server
with uploading images or files?
Yes.
Error handling.
You have to keep in touch with PHP error reporting in general
and properly handle $_FILES['name']['error'] variable in case of upload.
These two sources will provide you with sufficient and precise information on any error occurred.

I highly recommend to you first to read this article before setting 777 permission on the server. Besides, there are different ways of uploading files are shown, so I think you will solve your problems after reading this article. Good luck

I know this question is old but I doubt any of the answers given are correct as I have had this exact problem and it turned out to be that when I created the php form I forgot to add this line to the form tag enctype="multipart/form-data" so processing the form on my local machine worked fine but when I tried to upload an image to the production server with the form it wouldn't process the image file, it would process all the other data from the form just not the file that needed to be uploaded. After I added the line above it worked fine.

Related

PHP File Upload No Longer Working, No Changes Made (Plesk Hosting)

I have a web app built with angular and PHP that has been established and running since 2016. There is a file upload feature that will upload a file from client-side app to a directory on the server. I noticed the upload is no longer working. Nothing has changed on our end with the configuration of server/hosting or front-end application. The directory still exists and can successfully list files from the front. I get an internal server error when trying to upload with the code below. Very simple example and nothing to indicate this code no longer works. I have file-uploads = on in the php.ini file. It is hosted on GoDaddy. I have checked the error logs and can see that the request is failing but with no detail. Is anyone aware of what may be causing this? I can provide more detail, if thought necessary.
<?php
$target = '../images/attorney_photos/'.$_FILES['file']['name'];
move_uploaded_file($_FILES['file']['tmp_name'], $target);
print('/assets/images/attorney_photos/'.$_FILES['file']['name']);
?>
If your file upload is on then check for
upload_max_filesize
and
post_max_size
in your php.ini file and also if you want to upload more than a specific limit each request, then check
max_file_uploads
to be more than files you want upload.
Also it's better to use a tested library for upload your files. you can search for codeguy/upload in packagist and install it with composer for advanced usage or if you no need lots of options you can download this file from github that is so simple, easy to use and well written.
I hope this helps :)
login to plesk administrator panel then goto Domain->Website->PHP Settings
Change upload_max_filesize from "2MB" to "16MB"
Save and try uploading again.

Configuring php/MVC on server

I have a created a project in HTML/PHP and I am trying to upload everything to the server. I am not that familiar with servers other than the fact that your first page must be an index.php/htm file and that everything goes in the public_html folder. I am using MVC(codeigniter) so adding it to the server doesn't seem so straightforward. I have attached an image of my directories, the first file when viewed locally is the controller class which is home.php inside /application/controllers. If I just drag everything to the server as is, then I receive a 500 Internal Server Error. Can anyone help me fix this please?
The problem with a 500 internal server error is that's it's a generic message.
Try checking:
File / folder permission (No files or folders should be set to 777, 755 should be the maximum permissions setting.)
If you're using short tags: short_open_tag=On in php.ini
Incorrect syntax in .htaccess file (Try removing - test - recreate)
check error.log for more detailed information.
Hope any of this helps, I'll keep an eye on this topic.

Timthumb return blank, Why?

I have a wordpress theme with tim-thumb installed, the tim-thumb works fine when site was in local or in staging server (All images are shown as required). But when I upload this into live (Production server) into amazon dedicated server, it stop working for some specific images. Please check this link at Medisetter Image. It always return a blank. I don't know why. My guess is that it is a permission issue but I have recheck the permission with staging server it was same, 755. Oncee I change this to 777 but still it did not work.
Any one can helps me to solve this, Thanks.
I tried giving it a relative path:
http://www.medisetter.com/wp-content/themes/realestate-4/img_resize/timthumb.php?src=../../../uploads/2014/06/di8MEA4ie.png&w=598
But it returns an error that "The file you specified is <= 0 bytes.".
Which means it IS finding the file itself, but is unable to read it?

jQuery File Upload plugin - Empty file upload result

I've been playing about with this plugin over the last few days, customising it and setting it up to work exactly as my site requires. I got it all working fine on my localhost server, with no errors/bugs. However, when I try to upload it to my Plesk server, no files are shown onload (even though there are images in the target folder), and when I try to upload im presented with the " Empty file upload result" error. Oddly.. the file upload seems to work even though its displaying the error, and the relevant images appear in the folder. So it seems to only he having a problem with reading, but not with writing?
I've checked the permissions of the files and thumbnails folder, and set them both to 777, so that cant be the issue.
I really cant see why this is working on my localhost server but not my Plesk server. Any help would be much appreciated.
Finally solved this issue. The problem was that my Plesk server was running a very old version of PHP. Updating it to 5.3 seems to have cleared up my issues.

PHP file upload problem

I've got a really annoying problem with file uploads.
Users can choose a file in an html file field. When they submit the form, this file will be uploaded.
On the serverside I just use standard PHP code (move_uploaded_file). I do nothing weird.
Everything works perfectly.
I can see the file on the server, I can download it again, ...
However sometimes this doesn't work. I upload the file, process it and I get no errors.
But the file just doesn't exist on the server.
Each time I upload that specific file I get no errors but it never gets saved.
Only if I rename it (test.file to tst.file for example) I can upload it and it'll actually get saved.
I get this problem very rarely. And renaming always works. But I can't ask users to rename their files obviously...
I have no access to the apache tmp file directory, no access to logs or settings so this makes debugging even harder. I only have this problem on this particular server (which I don't manage; I don't even have access to it) and I use the exact same code on lots of servers that don't have this problem.
I would be grateful if someone could help me out here or point me in the right direction.
Trying adding this debug code:
echo '<pre>';
print_r($_FILES);
echo '</pre>';
You should see an error number. You can lookup what it means at http://uk3.php.net/manual/en/features.file-upload.errors.php
Might also be worth checking to make sure the destination file doesn't already exist.
My first thought was filesize issues. In the php.ini, if the post_max_size or upload_max_filesize are too small, you can end up with similar results - where the file just seems to disappear. You would get an error in the apache logs (which you mention you've no access to).
In those cases, the $_FILES array would simply be empty - as if the file never arrived. Since your responses to Gumbo and James Hall show that php is reporting a proper upload, I'm led to wonder about the processing you mention.
If, during the process, your memory gets maxed or the script runs too long, the script may be dying out before it gets a chance to move it. You'll want to check these:
memory_limit
max_execution_time
max_input_time
Otherwise, without the apache logs, I'd say it might be a good idea to start outputting to a log file of your own throughout your file processing script. Try a file_exists on the tmp file, see what info you can get from the file (permissions, etc).
Unfortunately PHP doesn't get involved until the upload is finished, which means you won't get much info during - only after the fact. You best option might be to talk to the hosting company and get access to the logs - even if for a short time. In my experience, I've rarely had trouble getting ot the logs - or at least getting a tech to check the logs for me while I run tests (in the case where a shared server doesn't split their logs - seems ridiculous, but I've seen it before).
Edit: I realize you can't change those php settings, but you might want to see what they are in order to find out if they're potential problems for your script. For instance, a low memory limit will kill your processor script if it's less than the size of the uploaded file.
If an upload failes you don’t get the same kind of error like a PHP syntax error or such.
But you can check the file upload status and report the error to the user yourself.
This is what you said...
"I have no access to the apache tmp file directory, no access to logs or settings so this makes debugging even harder. I only have this problem on this particular server (which I don't manage; I don't even have access to it) and I use the exact same code on lots of servers that don't have this problem."
According to what you said above, I assume that you are using a server that is shared among many users. If the Apache of this server is configured with something like "mod_suphp", then your PHP scripts will be executed using the privileges of your UNIX user account ("jef1234", for example), which means the files you create will have you ("jef1234") as the owner (instead of "apache" or "www-data").
The system's temporary directory (usually "/tmp") is usually configured with the "sticky bit" on. This means everyone can create files in this directory, but the created files are only accessible by the owner (you may treat this as the one who created it).
As a result, if the server configuration is not careful enough, you may have file naming collisions with other users' files. For example, when you upload "test.file", if another user has already uploaded another file with the same name, the system refuses to overwrite the file created by him, as thus you have to use another name.
Usually the problem does not exist because PHP is smart enough to generate temporary names for the uploaded file (ie. $_FILES["html_form_input_name"]["tmp_name"]). If somehow you can confirm that this is really the reason, the server is obviously mis-configured. Tell your system administrator the problem as ask him to solve it. If this could not be solved, you may do some JavaScript tricks on the name of the file before it is uploaded (not tested, just an idea)...
★ When the user submits the form, rename the file from, for example, "test.file" to "jef1234-test.file-jef1234". After the file is uploaded, move the file (ie move_uploaded_file()) to another place and rename it to the original filename by removing the added strings.
Hope this helps...
Asuka Kenji

Categories