Can';t通过Apache+连接到FTP服务器;PHP Web服务器,因为无法识别PHP函数(ftp_connect)

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不愿意识

标题有点不言自明,以下是详细信息:

我正在运行一个安装在笔记本电脑上的Web服务器,它使用Windows 10 Pro x64、Apache 2.4和PHP 7.1.8(来自Apache Lounge)作为Apache模块安装并作为Windows服务运行,所有内容都是手动和单独安装的

(我还使用PHP与MySQL数据库通信,但这超出了这个问题的范围。)

所以一切都很完美,直到我决定合并一个FTP服务器,通过FileZilla服务器的网站提供文件库服务。(在同一台机器中)


问题是,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