У меня есть простой веб-хостинг на SourceForge. Весь веб-хостинг на SourceForge использует SFTP.
Теперь я хочу получить файл на другом сервере (у меня есть нет административного разрешения; но я могу просматривать его в веб-браузере нормально. Такие как: http://data.example.com/videos/fun.mp4
.) на мой веб-хостинг на SourceForge (структура хостинга: /home/project-web/my-own-project/htdocs/my-folder
).
Я прочитал эти ответы на многие вопросы, такие как:
Я попробовал со всеми ответами. Это отображало успешное сообщение; но на моем сервере нет файла.
Затем я попытался изменить CHMOD на 777
(Я понимаю, что это повреждение; поэтому я пробовал только для проверки). И нет файла тоже; в другом ответе есть пустой файл.
У меня есть использование phpinfo();
для проверки cURL
, он (всегда) включен.
Можете ли вы сказать мне, что не так в моем списке дел. И, пожалуйста, покажите мне: «Как загрузить файл с URL-адреса на веб-хостинг SourceForge с помощью PHP?».
Мой вопрос не дублируется с существующими вопросами по переполнению стека.
Я использовал 20 кб файл для тестирования; но загруженный файл на моем сервере пуст.
обновленный согласно политике использования: https://sourceforge.net/p/forge/documentation/Project%20Web%20and%20Developer%20Web/#outbound-connectivity
Из-за прошлых злоупотреблений исходящий доступ к другим хостам с веб-серверов
строго запрещено и заблокировано правилами брандмауэра. это
включает доступ к другим хостам SourceForge.net; единственные исключения из
Эта политика является доступ к нашим серверам баз данных проекта и авторизован
исходящие письма. Доступ к серверу SCM недоступен из проекта
веб-серверы. Любой контент, необходимый от других хостов SourceForge.net
должны быть извлечены и сохранены в виде файла или записи базы данных, которые могут
затем получить доступ из скриптов на веб-серверах проекта. В то время как наш
Установка PHP (и другие языки) включает поддержку таких вещей, как
LDAP, IMAP и Postgres, мы не разрешаем входящий или исходящий
подключение с использованием этих протоколов. Эти компоненты включены так
сторонний код может храниться при развертывании на
Веб-серверы SourceForge.net; и поддержать тестирование проекта
код, который требует этих функций.
Таким образом, возможность подключения к внешним хостам заблокирована брандмауэром и невозможна.
Пожалуйста, оставьте свой phpinfo()
вывод в вашем вопросе. В частности, сведения о системе (верхняя часть), ядро, скручиваемость, сокеты и стандартные значения секций (не указывайте конфиденциальную информацию, такую как пароли / соединения с базой данных).
Существует множество вещей, которые могут помешать его сохранению, пользовательские разрешения (для исполняемого файла), конфигурация сервера, suPHP (пользователь с изолированной программной средой), веб-каталог с поддержкой chroot, конфигурация php и т. Д. Нам потребуется увидеть фактический код, который вы использовали для диагностики ваш specific issue
,
Что-то попробовать, используйте этот код.
<?php
if (file_put_contents('/home/project-web/my-own-project/htdocs/my-folder/test.txt', 'Hello World!')) {
echo 'File Saved Successfully!';
}
если test.txt
существует и говорит Hello World!
когда вы загружаете и открываете его из SFTP, попробуйте следующее.
Также большинство клиентов SFTP необходимо обновить после добавления нового содержимого на сервер. Поэтому, пожалуйста, убедитесь, что вы обновили свой SFTP-клиент.
<?php
umask(0000); //this sets everything this script interacts with as everyone writable/executable
//(same as chmod(0777))
$output_path = '/home/project-web/my-own-project/htdocs/my-folder';
$out_file = 'fun.mp4';
$source = file_get_contents('http://data.example.com/videos/fun.mp4');
if (empty($source)) {
die('No Content Received');
}
if (!@mkdir($output_path, 0777, true) && !is_dir($output_path)){
die('Unable to create destination directory!');
}
if (file_put_contents($output_path . '/' . $out_file, $source)) {
echo 'File Saved Successfully!';
}
Я протестировал выше на своем веб-сервере с 5 MB
MP4 (конкретно http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4
первый результат Google для загрузки MP4), и он работал нормально.
Это будет последняя попытка заставить его работать.
Других решений пока нет …