Can';t通过Apache+连接到FTP服务器;PHP Web服务器,因为无法识别PHP函数(ftp_connect)
标题有点不言自明,以下是详细信息: 我正在运行一个安装在笔记本电脑上的Web服务器,它使用Windows 10 Pro x64、Apache 2.4和PHP 7.1.8(来自Apache Lounge)作为Apache模块安装并作为Windows服务运行,所有内容都是手动和单独安装的 (我还使用PHP与MySQL数据库通信,但这超出了这个问题的范围。) 所以一切都很完美,直到我决定合并一个FTP服务器,通过FileZilla服务器的网站提供文件库服务。(在同一台机器中)Can';t通过Apache+连接到FTP服务器;PHP Web服务器,因为无法识别PHP函数(ftp_connect),php,windows,apache,dll,ftp,Php,Windows,Apache,Dll,Ftp,标题有点不言自明,以下是详细信息: 我正在运行一个安装在笔记本电脑上的Web服务器,它使用Windows 10 Pro x64、Apache 2.4和PHP 7.1.8(来自Apache Lounge)作为Apache模块安装并作为Windows服务运行,所有内容都是手动和单独安装的 (我还使用PHP与MySQL数据库通信,但这超出了这个问题的范围。) 所以一切都很完美,直到我决定合并一个FTP服务器,通过FileZilla服务器的网站提供文件库服务。(在同一台机器中) 问题是,PHP不愿意识
问题是,PHP不愿意识别ftp\u connect()PHP函数 这是我尝试运行的PHP代码:
try {
// Create the connection.
$conftp = ftp_connect('myhostname');
} catch (Error $ex) {
print nl2br("Error trying to connect to the ftp server:\n- " . $ex->getMessage() . "\n");
}
- 所以,;我做了官方PHP安装手册上说的一切
- 我编辑了相应的php.ini配置文件,并包含了动态扩展名“php_ftp.dll”
- 该库是安装附带的原始文件“php_ftp.dll”
- 我还尝试了不同的PHP版本:PHP7.1.6和7.0.22
- PHP目录位于Windows环境路径变量上
- 我检查了扩展目录('ext')是否被PHP找到,因为当我删除另一个扩展(如'PHP_pdo_mysql.dll'时,它会进行检测
- 无论如何,我也尝试将库('php_ftp.dll')放在我能想到的几乎每个目录上,但没有成功
- 我检查了服务器是否支持它:
C:\Nydus\php7>php -v PHP 7.1.8 (cli) (built: Aug 1 2017 20:56:53) ( ZTS MSVC14 (Visual C++ 2015) x64 ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies C:\Nydus\php7>php --ri ftp ftp FTP support => enabled FTPS support => enabled
- 我检查了扩展是否正确加载:
C:\Nydus\php7>php -m [PHP Modules] bcmath calendar Core ctype curl date dom filter ftp gd hash iconv json libxml mbstring mcrypt mysqlnd pcre PDO pdo_mysql Phar readline Reflection session SimpleXML SPL standard tokenizer wddx xml xmlreader xmlwriter zip zlib [Zend Modules]
- 是的,每次检查Apache服务之前,我都会重新启动它
- 我检查了当前PHP7发行版中没有关于它的bug。
- 我甚至从PHP可执行文件成功运行了该函数并从FTP服务器获得连接:
C:\Nydus\php7>php -r ftp_connect('myhostname');
所以我不知道为什么在我的网站上使用该函数时无法识别该函数,当我使用try-catch捕获错误时,它会给我以下错误消息:“调用未定义的函数ftp\u-connect()” 我非常感谢你能给予我的每一点帮助。这是我第三天进行广泛的信息搜索,但我仍然坚持这样做,所以我开始火化 如果你们需要更多的信息,我将很乐意合作 感谢您的阅读和宝贵的时间 编辑:这是我尝试使用ftp函数()时的错误日志输出: EDIT2:我几乎完全肯定,由于扩展固有的某些原因,或者PHP本身无法加载PHP_curl和PHP_ftp,因为我逐渐添加了我正在使用的扩展,并且除了这两个之外,其他扩展都可以找到 嗯,我看不出还有什么可以测试的,所以我会在一个分区中安装的单独CentOs系统中执行相同的项目,不管怎样,如果有人知道这里发生了什么,请告诉我 编辑3:格式化了整个系统并重做了一切,现在一切正常了 最糟糕的是,我不知道发生了什么,但我不得不这么做,因为我有一条死线要面对
所以也许这个帖子应该关闭。谢谢阅读。您检查了吗
是的,检查了。在“加载的配置文件”中显示我配置的php.ini的路径。虽然在“配置文件(php.ini)路径中出现了路径C:\Windows,但我现在进行了搜索,没有找到任何与php.ini相关的文件。以下是整个phpinfo:在标题中有关于使用函数get\u loaded\u extensions()加载哪些模块的信息,但现在我仔细看,ftp模块没有任何内容,它应该出现在那里吗?从我对我的模块的了解来看,它应该出现在它自己的部分中。这意味着它没有完全加载。这是有道理的,但即使这样,我也不明白我做错了什么,因为我只知道一个php.ini,它显然有ftp扩展名uncommented.也许我必须做些别的事情?我也正确地设置了扩展名\u dir。不知道还有什么可以。你是否检查了是的,检查了它。在“加载的配置文件”中显示了我配置的php.ini的路径。虽然在“配置文件(php.ini)”中显示了路径C:\Windows,我现在进行了搜索,没有找到任何与php.ini相关的文件。这是整个phpinfo:在标题中,有关于使用函数get_loaded_extensions()加载哪些模块的信息,但是现在我仔细看了看,ftp模块没有任何内容,它是否应该出现在那里?从我的情况可以看出,它应该出现在它自己的部分中。这意味着它没有完全加载。这是有道理的,但即使这样,我也不明白我做错了什么,因为我只知道一个php.ini,它显然没有注释ftp扩展名。也许我得做点别的?我还正确设置了扩展目录。不知道还能是什么。
[09-Aug-2017 19:05:37 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'C:\Nydus\php7\ext\php_curl.dll' - No se puede encontrar el m�dulo especificado.
in Unknown on line 0
[09-Aug-2017 19:05:37 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'C:\Nydus\php7\ext\php_ftp.dll' - No se puede encontrar el m�dulo especificado.
in Unknown on line 0
[09-Aug-2017 19:05:37 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'C:\Nydus\php7\ext\php_curl.dll' - No se puede encontrar el m�dulo especificado.
in Unknown on line 0
[09-Aug-2017 19:05:37 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'C:\Nydus\php7\ext\php_ftp.dll' - No se puede encontrar el m�dulo especificado.
in Unknown on line 0
[09-Aug-2017 19:05:59 UTC] PHP Fatal error: Uncaught Error: Call to undefined function ftp_connect() in C:\Nydus\Apache24\htdocs\conn_ftp.php:12
Stack trace:
#0 C:\Nydus\Apache24\htdocs\profile.php(6): include_once()
#1 {main}
thrown in C:\Nydus\Apache24\htdocs\conn_ftp.php on line 12