在 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,Slackware上的PHP/5.4.24)

它会引发以下错误:

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服务器

任何想法将不胜感激。

回答我自己的问题:经过数小时的思考可能导致此问题的原因,结果证明是带有卷曲包装器的PHP选项。从 5.5 版开始,它已从 PHP 中删除,因此升级 PHP 版本或在禁用卷曲包装器的情况下重新编译 PHP 可以解决此问题。我希望这个答案会有所帮助。:)