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