第一次在这里提问,请温柔点:-)
我正在 Synology 盒子上编写 PHP 命令行脚本,以通过 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 does not ship the FTP extension by default if not on 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。
关于php - synology php ftp_ssl_connect - 调用未定义的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34935997/