ssl — synology php ftp_ssl_connect — вызов неопределенной функции

Первый раз задайте вопрос здесь, пожалуйста, будьте осторожны 🙂

Я пишу сценарий командной строки PHP на поле Synology для извлечения файлов через ftps и начинаю с этого бита:

$ftp = ftp_ssl_connect("ftp.example.com");

При запуске из командной строки я получаю

Fatal error: Call to undefined function ftp_ssl_connect() in ...

phpinfo () говорит мне:

...
Registered PHP Streams => php, file, glob, data, http, ftp, https, ftps, zip, compress.zlib, compress.bzip2
Registered Stream Socket Transports => tcp, udp, unix, udg, ssl, sslv3, sslv2, tls
...
openssl
OpenSSL support => enabled
OpenSSL Library Version => OpenSSL 1.0.1p-fips 9 Jul 2015
OpenSSL Header Version => OpenSSL 1.0.1p-fips 9 Jul 2015

а также /etc/php/conf.d/extensions.ini содержит extension = openssl.so (без начального ;)

Мне кажется, что все предпосылки для ftp_ssl_connect() на месте.

FWIW:

$ uname -a
Linux DiskStation01 2.6.32.12 #5644 Wed Oct 28 12:36:45 CST 2015 armv5tel GNU/Linux synology_88f6282_213

Что будет в следующем месте, чтобы посмотреть?

2

Решение

Тип php -m видеть скомпилированные модули, как PHP не поставляется расширение FTP по умолчанию, если не в Windows. призвание phpinfo() также должны показывать используемые ключи компилятора, и если они включают --enable-ftp,

Любопытно, что я только что попробовал это на моем RS812, и он показывает оба модуля FTP и OpenSSL в комплекте, и он отлично работает:

nas-name> php -r "ftp_ssl_connect('test');"PHP Warning:  ftp_ssl_connect(): php_network_getaddresses: gethostbyname failed
in Command line code on line 1

Это указывает на ftp_ssl_connect работает, но не может проанализировать предоставленное имя хоста. Я понятия не имею, почему у вас все будет иначе, если вы сами не скомпилируете PHP.

1

Другие решения

Как уже упоминалось в Нильс Решение ftp-модуль отсутствует в установке по умолчанию. Мне нужен был модуль в CLI-версии PHP, но он был недоступен на всех четырех моих устройствах Synology (DS 412+, DS 410, RS812 + и RS814 +).

Включение модуля в Веб-станция настройки не помогли, но есть решение для версии CLI в Synology Forum Entry:

  1. убедитесь, что расширение ftp выбрано в настройках php Web Station.

  2. затем отредактируйте /etc/php/php.ini, добавив в него следующую строку: — extension = /volume1/@appstore/PHP5.6/usr/local/lib/php56/modules/ftp.so

  3. вот и все. Не требуется перезапуск Web Station или NAS, поскольку php загружается из командной строки каждый раз, когда вызывается php.

0

По вопросам рекламы [email protected]