Первый раз задайте вопрос здесь, пожалуйста, будьте осторожны 🙂
Я пишу сценарий командной строки 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
Что будет в следующем месте, чтобы посмотреть?
Тип 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.
Как уже упоминалось в Нильс Решение ftp-модуль отсутствует в установке по умолчанию. Мне нужен был модуль в CLI-версии PHP, но он был недоступен на всех четырех моих устройствах Synology (DS 412+, DS 410, RS812 + и RS814 +).
Включение модуля в Веб-станция настройки не помогли, но есть решение для версии CLI в Synology Forum Entry:
убедитесь, что расширение ftp выбрано в настройках php Web Station.
затем отредактируйте /etc/php/php.ini, добавив в него следующую строку: — extension = /volume1/@appstore/PHP5.6/usr/local/lib/php56/modules/ftp.so
вот и все. Не требуется перезапуск Web Station или NAS, поскольку php загружается из командной строки каждый раз, когда вызывается php.