PHP FTP скрипт работает сам по себе, но не работает, когда часть плагина WordPress - PullRequest
1 голос
/ 11 июня 2019

У меня есть этот действительно простой кусочек PHP, который подключается через FTP для получения файла. Это выглядит так:

error_reporting(-1);
ini_set("display_errors", 1);

$ftp_server = "xxxx";
$ftp_user = "xxxx";
$ftp_pass = "xxxx";

$conn_id = ftp_connect($ftp_server); 

if (ftp_login($conn_id, $ftp_user, $ftp_pass)) 
{
    echo "Connected successfully as $ftp_user@$ftp_server<br>\n";

    ftp_pasv($conn_id, true);

    if ( ftp_chdir($conn_id, '/mydir') )
    {
        echo "Changed directory successfully<br>\n";

        if (ftp_get($conn_id, '/full/path/to/local.file', 'remote.file', FTP_ASCII))
        {
            echo "Got file successfully. No problems here<br>\n";
        }
        else
        {
            echo "Uh oh. Problems getting file<br>\n";
            print_r(error_get_last());
        }
    }
    else
    {
        echo "Couldn't change directory<br>\n";
    }
} else {
    echo "Couldn't connect as $ftp_user<br>\n";
}

// close the connection
ftp_close($conn_id);

Создание автономного файла PHP с этим прекрасно работает. Он подключается, входит в систему и получает файлы. Никаких ошибок.

Теперь я беру тот же самый кусок кода, не внося никаких изменений, и помещаю его в плагин WordPress, и он больше не работает. Вместо этого я получаю:

Предупреждение: ftp_get (): php_connect_nonb () не выполнен: операция в процессе (115) в /path/to/file/cron.php в строке xx

Предупреждение: ftp_get (): введите значение A. в /path/to/file/cron.php в строке xx

Я провел большой поиск по предупреждению php_connect_nonb, и все они предполагают, что это связано с брандмауэром, но как это может работать, когда это отдельный скрипт.

Есть ли у кого-нибудь логические рассуждения о том, как это может быть возможно и почему он внезапно перестанет работать, если его поместить в WP? У меня совершенно нет идей.

1 Ответ

0 голосов
/ 13 июня 2019

Проверьте ваш php.ini файл.Ищите «модули» или «динамические расширения».Убедитесь, что линия extension=php_ftp.dll находится среди них.Если вы найдете эту строку, но перед ней стоит ;, удалите ее, так как она используется для комментирования строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...