Intereting Posts
Альтернативные альтернативы lookback для альтернативных регулярных выражений порядок выполнения в веб-среде Laravel показывает форму формы с именем элемента формы как ключ Легкий способ защиты паролем php-страницы Как конвертировать VML в png с помощью php Какие из них можно манипулировать на стороне клиента Вызов функции контроллера в другом контроллере в CodeIgniter Время ожидания SSL-соединения в facebook fql Как выполнить модульный код сокета с помощью PHPUnit? как использовать константу из класса в качестве определения аргумента в php-функции? Лучший способ получить размер файла, превышающий 2 ГБ в php? Проблема с Gearman: GEARMAN_COULD_NOT_CONNECT Instagram API Retrieve Hash Media – next_max_id и min_id устарели для этой конечной точки; вместо этого используйте min_tag_id и max_tag_id Проверка правильности выражения php Использование PHP «вставить несколько», чтобы вставить все 4 строки одновременно

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 

Каким будет следующее место?

Введите 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 :

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

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

  3. это оно. Перезапуск веб-станции или NAS не требуется, так как php загружается из командной строки каждый раз, когда вы вызываете вызов php.