I need to know what to use for a destination path for PHP's move_uploaded_file function. (see http://php.net/manual/en/function.move-uploaded-file.php)
Right now, I have code that works fine. My domain's root directory contains the following items (among others):
uploads <-this is a folder
add-photo-submit.php <-this is a PHP file that uses move_uploaded_file
In add-photo-submit.php, I have the following line of code:
$target_path = "uploads/" . basename($_FILES['uploadedFile']['name']);
$target_path is used as the destination parameter for the function. This works just fine when I access the file through www.mydomain.com/add-photo-submit.php
However, I recently changed the .htaccess file to remove the .php and add a trailing slash. Now the PHP file is accessed at www.mydomain.com/add-photo-submit/ I think the PHP file is interpreting the target path as "www.mydomain.com/add-photo-submit/uploads/filename.jpg"
I tried using an absolute path, but it said I didn't have permission...
In the future I would like my root directory to be setup like this:
root
-admin (folder)
-add-photo-submit.php
-uploads
What frame of reference does move_uploaded_file have?
PHP's local filename operations have no idea what mod_rewrite did to your urls, and deal only with actual raw file system paths. You could have mod_rewrite turn your nice simple
example.com/index.php
into a hideousexample.com/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/yz
and PHP would still be running in the same physical directory on the server.If the PHP script lives at
/home/sites/example.com/html/index.php
, and you useuploads/example.jpg
as your move path, then PHP will attempt to put that image into/home/sites/example.com/html/uploads/example.jpg
, regardless of what the requested URL was.You should use document_root to get absolute path like this:
We can use
dirname(__FILE__)
instead of server root declare below line in any of root file(index.php)and you can now use this in any files where upload is needed.
Or use