Это прослушивало меня часами.
Я пишу приложение с angularjs и пытаюсь загрузить php-часть загрузки файла.
похоже, что скрипт php пытается скопировать файл из/tmp/randomuniquefilename в правильный каталог. Проблема в том, что я не хочу, чтобы она хранилась в моей корневой папке temp. Я изменил путь загрузки файла по умолчанию PHP.ini по умолчанию в папку/var/www/tmp// var/www/tmp/и имеет правильные разрешения.
Я хотел бы знать, как/где изменяется моя переменная $_FILES[ 'file' ][ 'tmp_name' ]
, поэтому я могу ее изменить. Я попробовал просто $_FILES[ 'file' ][ 'tmp_name' ] = '/var/www/tmp/'
, это не сработало для меня.
Моя ошибка PHP:
[Tue Jan 07 15:46:14 2014] [error] [client 127.0.0.1] PHP Warning: move_uploaded_file(/var/www/funandgames/jobernize/uploaded/bleg.png): failed to open stream: Permission denied in /var/www/funandgames/jobernize/uploaded/test.php on line 18, referer:
http://127.0.0.1/funandgames/jobernize/
[Tue Jan 07 15:46:14 2014] [error] [client 127.0.0.1] PHP Warning: move_uploaded_file(): Unable to move '/tmp/phpbkz0xn' to '/var/www/funandgames/jobernize/uploaded/bleg.png' in /var/www/funandgames/jobernize/uploaded/test.php on line 18, referer:
http://127.0.0.1/funandgames/jobernize/
Может быть, мои JS настройки, что вар, или это будет PHP?
Вот мой PHP:
<?php
if (!empty($_FILES)) {
function varDumpToString ($var)
{
ob_start();
var_dump($var);
$result = ob_get_clean();
error_log($result);
}
varDumpToString($_FILES);
$tempPath = '/var/www' . $_FILES[ 'file' ][ 'tmp_name' ];
$uploadPath = dirname(__FILE__) . '/' . $_FILES[ 'file' ][ 'name' ];
error_log($tempPath);
move_uploaded_file($tempPath, $uploadPath);
$answer = array('answer' => 'File transfer completed');
$json = json_encode($answer);
echo $json;
} else {
echo 'No files';
}
?>
Я просто приложил/уаг/WWW на пути, и теперь я не получаю никаких ошибок, но ничего не происходит, файл не копируется.
Похоже, что временное имя включает/tmp/не только имя файла по какой-либо причине, это нормально?
Вы перезапустили веб-сервер после внесения изменений в 'php.ini'?FYI, имя 'tmp_name' задано на стороне сервера, а ваша ошибка с разрешением разрешена * не имеет ничего общего с исходным файлом, но путь назначения – Phil
да, да, и да, я знаю, спасибо, не обошел путь назначения, просто хотите получить правильный путь источника. – Melbourne2991
Проверьте, что показывает 'phpinfo()' для параметра ['upload_tmp_dir'] (http://php.net/manual/ini.core.php#ini.upload-tmp-dir). Кроме того, 'tmp_name' будет содержать полный путь. Вы не префикс его ничего – Phil