在 php 中使用 ftp 包装器时设备的 ioctl 不合适

Inappropriate ioctl for device when using ftp wrapper in php

<?php
error_reporting(E_ALL);
var_dump(scandir('ftp://user:pass@host:21/public_html/'));

适用于我的本地 WAMP 服务器,但它似乎不适用于我的学校服务器(Apache/2.4.6,PHP/5.4.24 在 Slackware 上)

它抛出以下错误:

root@darkstar:/var/www/codedit/www# php test.php
PHP Warning:  scandir(ftp://...@alpha.hosttox.com/public_html/): failed to open dir: not implemented in /hdd/hdd11/www/codedit/www/test.php on line 4
PHP Warning:  scandir(): (errno 25): Inappropriate ioctl for device in /hdd/hdd11/www/codedit/www/test.php on line 4
bool(false)

但是,我在使用内置 PHP 函数(ftp_connect、ftp_login 等)时成功登录到 ftp 服务器

如有任何想法,我们将不胜感激。

回答我自己的问题: 经过几个小时思考可能导致此问题的原因,结果证明是 with-curlwrappers PHP 选项。从 5.5 版开始,它已从 PHP 中删除,因此升级 PHP 版本或在禁用 curlwrappers 的情况下重新编译 PHP 可解决问题。我希望这个答案会有一些用处。 :)