Я настроил PHP-скрипт для загрузки данных IP2Location ежемесячно с помощью функции копирования PHP. Приведенный ниже скрипт отлично работает и загружает файл (размер файла тоже правильный, около 15 МБ):
include('auth/resources/funcs.inc.php');
copy('http://www.ip2location.com/download?productcode=DB11LITEBIN&[email protected]&password=mypassword', LOCAL_DATAFILES . '/ip/DB11_'.date('d-m-Y', time()).'.BIN');
$myFile = LOCAL_DATAFILES . "/ip/active_db.txt";
$fh = fopen($myFile, 'w') or die();
$stringData = 'DB11_'.date('d-m-Y', time()).'.BIN';
fwrite($fh, $stringData);
fclose($fh);
однако всякий раз, когда я пытаюсь запустить PHP-файл IP2Location, он показывает эти ошибки:
Предупреждение: unpack (): Тип V: недостаточно ввода, нужно 4, иметь 0 в /path/to/file/IP2Location.inc.php в строке 376
Я проверил IP2Location.inc.php в базе данных IP, когда я вручную загружаю его, и он прекрасно работает без ошибок. Однако, когда я загружаю базу данных через PHP, используя функцию копирования, она показывает множество ошибок, из-за которых я думаю, что это как-то портит файл. Я протестировал функцию копирования на другом zip-файле, расположенном на моем сервере, и он работал нормально, без повреждений. Я не уверен, в чем проблема, у кого-нибудь есть идеи?
Файл, загруженный с сервера, имеет расширение .ZIP.
Пожалуйста, разархивируйте файл, чтобы получить файл CSV или BIN, прежде чем запрашивать его с помощью PHP API IP2Location.
Других решений пока нет …