synology php ftp_ssl_connect – Llamada a la función indefinida

Es la primera vez que hace una pregunta aquí, por favor sea amable 🙂

Estoy escribiendo un script de línea de comandos de PHP en un cuadro de Synology para buscar archivos a través de ftps, y empiezo con este bit:

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

Cuando corro desde la línea de comando, obtengo

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

phpinfo () me dice:

 ... 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 

y /etc/php/conf.d/extensions.ini contiene extension = openssl.so (sin una inicial ; )

Me parece que todos los requisitos previos para ftp_ssl_connect() están en su lugar.

fwiw:

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

¿Cuál sería el siguiente lugar para mirar?

Escriba php -m para ver el comstackdo en módulos, ya que PHP no envía la extensión FTP de manera predeterminada si no está en Windows . Llamar a phpinfo() también debería mostrar los conmutadores del comstackdor utilizados, y si incluyen --enable-ftp .

Lo curioso es que acabo de probar esto en un RS812 mío, y muestra los moodules de FTP y OpenSSL incluidos, y funciona bien:

 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 

Esto indica que ftp_ssl_connect está funcionando pero no puede analizar el nombre de host proporcionado. No tengo idea de por qué los tuyos serían diferentes a menos que hayas comstackdo PHP tú mismo.

Como se menciona en la solución de Niels , el módulo ftp falta en la instalación predeterminada. Necesitaba el módulo en la versión CLI de PHP, pero no estaba disponible en ninguno de mis cuatro dispositivos Synology (DS 412+, DS 410, RS812 + y RS814 +).

La habilitación del módulo en la configuración de la estación web no ayudó, pero hay una solución para la versión CLI en una entrada del foro de Synology :

  1. asegúrese de que la extensión ftp esté seleccionada dentro de la configuración de php de Web Station.

  2. luego edite /etc/php/php.ini para incluir una línea como esta: – extension = /volume1/@appstore/PHP5.6/usr/local/lib/php56/modules/ftp.so

  3. Eso es. No se requiere reiniciar Web Station o NAS, ya que php se carga desde la línea de comandos cada vez que se realiza una llamada a php.