Кажется, у меня странная ошибка, которую я просто не могу понять. Мой веб-сайт работал на одном сервере, но когда я перевел его на новый, он перестал работать. Я считаю, что сузил ошибку до этой строки кода:
$ret = move_uploaded_file($tmp_name, $orig_path);
Это выполняется с помощью вызова AJAX, поэтому его немного сложно отладить, но скрипт может отправить обратно код ошибки, и тогда мой JavaScript alert
сделает это. Итак, я обернул его в два из этих операторов отладки:
echo json_encode(array(
'success' => false,
'errno' => $tmp_name.' -> '.$orig_path,
));
exit;
$ret = move_uploaded_file($tmp_name, $orig_path);
echo json_encode(array(
'success' => false,
'errno' => 'no error',
));
exit;
Первый работает нормально и выдает что-то вроде:
error /tmp/phpk3RICU -> /home/username/Websites/website/photos/o/2-4a3354dd017a9.jpg
Возможно, я немного новичок в Linux, но на самом деле я не могу найти /tmp/phpk3RICU
в моей системе (удаляется ли он, как только скрипт завершается, или как?). Подробнее об этом через секунду.
Если я удаляю первую проверку отладки и запускаю move_uploaded_file
, вторая проверка отладки, кажется, никогда не выполняется, что заставляет меня поверить, что move_uploaded_file зависает.
Если вместо использования $tmp_name
я использую файл, который я знаю, не существует, то 2-ая проверка ДОЛЖНА выполняться. Так что ... похоже, что он просто не хочет перемещать этот tmp-файл, но не сообщает об ошибке.
Я запускаю свежую установку стека LAMP на мою машину Unbutu, установленную через apt-get ... дайте мне знать, если вам нужна дополнительная информация.
Оу ... и не знаю, имеет ли это отношение, но файл загружается через flash.