gpt4 book ai didi

php - 无法使用本地主机的 PHP ftp_connect 连接到 FTP

转载 作者:可可西里 更新时间:2023-11-01 13:10:23 26 4
gpt4 key购买 nike

我一直在尝试制作一些脚本,通过 FTP 从我在 CentOS 中的本地主机 Apache 下载文件,但我无法让它工作!

我使用的代码是任何基本 ftp 请求使用的代码:

<?php
$ip= FTP_IP_HERE;
$port='21';
$timeout='90';
$un='username';
$pw='password';

// Connect to ftp
$conn_id = ftp_connect($ip,$port,$timeout);

// Open a session to an external ftp site
$login_result = ftp_login ($conn_id, $un, $pw);

// Check open
if ((!$conn_id) || (!$login_result)) {
print "FTP connection failed!";
exit();
}

// turn on passive mode transfers
if (ftp_pasv($conn_id, true) == FALSE) {
print "Passive FTP connection failed!";
exit();
}

我在远程服务器上尝试了相同的脚本并且成功了!我不确定这是要完成的任何 apache 配置,还是 PHP 本身的限制。

更新:

错误日志如下:

Warning: ftp_login() expects parameter 1 to be resource, boolean given in /var/www/html/ftp/FTP.php on line 16

Warning: ftp_get() expects parameter 1 to be resource, boolean given in /var/www/html/ftp/FTP.php on line 22
Falha ao enviar o arquivo test.pdf<br />Array
(
[type] => 2
[message] => ftp_get() expects parameter 1 to be resource, boolean given
[file] => /var/www/html/ftp/FTP.php
[line] => 22
)

Warning: ftp_close() expects parameter 1 to be resource, boolean given in /var/www/html/ftp/FTP.php on line 30

最佳答案

好的,我遇到了同样的问题,我找到了适合我的案例的解决方案。将其张贴在这里以帮助他人。

我的 PHP 脚本会失败,但我可以通过命令行轻松地使用 FTP。我验证了我的防火墙没有阻止脚本,并且我的日志中没有收到任何 PHP 错误...

四处搜索后,我的问题似乎是 SELinux。我不想关闭它,所以我检查了 httpd_can_network_connect 的状态。

通过运行检查你的状态:

getsebool httpd_can_network_connect 

如果你得到:

httpd_can_network_connect --> off

这可能是您的问题。

注意:

如果您已经开启:

httpd_can_network_connect --> on

SELinux is disabled

那么这不会解决您的问题...祝您找到解决方案好运。

修复

通过运行启用httpd_can_network_connect:

setsebool httpd_can_network_connect=1

再次测试您的脚本,看看它是否有效。这对我有用,所以我确保设置一个策略来保持启用。

setsebool -P httpd_can_network_connect=1

注意:-P 设置策略,因此它在重启后仍然存在

关于php - 无法使用本地主机的 PHP ftp_connect 连接到 FTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12462898/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com