日常问题 第3页 WordPress 3.0以上的版本支持直接开启多站点模式,这样一来,你可以在一个后台切换多个站点进行管理。多站点模式可以使用多个不同的域名绑定,避免了在同一个服务器安装多个WordPress的尴尬,管理多个网站非常方便,下面就介绍一下安装和启用多站点的操作方法。 开启网络配置 在网站根目录下的 wp-config.php 添加: define('WP_ALLOW_MULTISITE', true); 配置多站点模式 刷新网站后台,访问 工具 > 配置网络,根据自己的需要选择“子域名”或者“子目录”模式,然后点击“安装”,如果需要绑定域名,可以选择“子域名”模式。之后系统会生成两段代码,一段添加到网站根目录下的 wp-config.php 中,一段添加到网站根目录下的 .htaccess 文件中。 添加网站域名 服务器Apache设置为泛域名解析,然后在 我的站点 – 管理网络 – 站点 里,添加新的站点,选一个子域名添加站点。 添加好了以后,在子域名上点编辑,把里面的“站点地址(URL)”修改为指定的独立域名,然后将该独立域名DNS绑定过来,即可完成配置。 设置COOKIE 在网站根目录下的 wp-config.php 添加: define( 'COOKIE_DOMAIN', '' ); 这步操作很重要,如果不设置的话,之后登录网站后台会提示“错误:Cookies被阻止或者您的浏览器不支持。要使用WordPress,您必须启用Cookies。” 之后,用户就可以用一套WordPress程序来管理多个不同的站点,可以同步调整主题和插件,这些站点可以是完全不同的域名,管理起来非常方便。 如果有不懂的、欢迎加入我们学派吧。一起学习交流。右上角站长群
有需要服务器方面的需求和咨询,可以联系博主 QQ 7271895 禁用文章修订历史版本 禁用自动保存功能 禁用自动草稿功能 下面的方法需要修改源文件所以在打开每一个文件之前,记得一定要先做好备份! 禁用文章修订历史版本 1.打开 wp-config.php 文件 2.在 $table_prefix = \’wp_\’; 前面添加下面的两行代码: define(\'WP_POST_REVISIONS\', false);//禁用历史修订版本 define(\'AUTOSAVE_INTERVAL\', false);//自动保存时间设置为一天 如下: 禁用自动保存功能 1.打开 wp-admin/post.php 文件,搜索 if ( \’attachment\’ !== $post_type ) ,找到以下代码 150-151行 if ( \'attachment\' !== $post_type ) wp_enqueue_script(\'autosave\'); 将这两行用注释符号//注释即可!如下: 2.打开 wp-admin/post-new.php 文件,搜索 wp_enqueue_script( \’autosave\’ ); (69行),在代码前面加//将其注释或删除 禁用自动草稿功能 打开 wp-adminincludespost.php 文件,搜索 if ( $create_in_db ) { 找到以下代码 597行 $post_id = wp_insert_post( array( \'post_title\' => __( \'Auto Draft\' ), \'post_type\' => $post_type, \'post_status\' => \'auto-draft\' ) ); $post = get_post( $post_id ); 修改为: global $current_user,$wpdb; $post = $wpdb->get_row( "SELECT * FROM $wpdb->posts WHERE post_status = \'auto-draft\' AND post_type = \'$post_type\' AND post_author = $current_user->ID ORDER BY ID ASC LIMIT 1" ); if (!($post) ) { $post_id = wp_insert_post( array( \'post_title\'...
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价,云服务器3年机/5年机限时抢购,低至 2.5折
2024-12-21
有运维或服务器方面的需求,可以联系博主 QQ 7271895 简介 受影响的版本 攻击带来的影响 技术细节 临时修复程序 时间线 总结 导语:WordPress是网络上最受欢迎的CMS。在这篇文章中,我们将讲述在WordPress内核中引入一个经认证的任意文件删除漏洞,这个漏洞可能会导致攻击者执行任意代码。 简介 WordPress是目前网络上最受欢迎的CMS。根据w3tech的资料显示,约有30%的网站都在使用它1。这种广泛的采用,也使其成为了网络犯罪分子非常感兴趣的一个目标。在这篇文章中,我们将讲述在WordPress内核中引入一个经认证的任意文件删除漏洞,这个漏洞可能会导致攻击者执行任意代码。在7个月前,我们向WordPress安全团队报告了这个漏洞,但至今依然没有得到修复。由于经过了这么长时间,WordPress官方都没有发布任何补丁或具体修复计划,所以我们决定公开这个事件。 受影响的版本 截止到本篇文章发送时,还没有补丁可防止此漏洞的使用。任何WordPress版本(包括当前的4.9.6版本),都容易受到该漏洞的影响。 如果要利用该漏洞,攻击者需要事先获得编辑和删除媒体文件的权限。因此,该漏洞可以通过对与作者权限相同的用户来提升权限,或者通过其他漏洞的错误配置来利用。 攻击带来的影响 利用此漏洞,使攻击者能够删除WordPress安装的任何文件(+ PHP服务器上的任何其他文件,PHP进程用户具有适当的删除权限)。除了删除整个WordPress安装文件对系统的影响(如果没有当前备份可用,会导致灾难性后果),攻击者可以利用任意文件删除功能绕过一些安全措施,并在Web服务器上执行任意代码。更确切地说,可以删除以下文件: .htaccess:一般来说,删除此文件不会有不安全的影响。但是,在某些情况下,.htaccess文件包含与安全相关的约束(例如,对某些文件夹的访问限制)。因此,删除此文件将会禁用这些安全限制。 index.php文件:通常情况下,将空的index.php文件放置到目录中,以防止Web服务器无法执行的情况下的目录列表。如果删除这些文件则将为攻击者提供一份列表,列出受此措施保护的目录中的所有文件。 wp-config.php:删除这个WordPress安装文件,会在下次访问该网站时触发WordPress安装过程。这是因为wp-config.php包含数据库凭证,如果没有它,WordPress的将认为它尚未安装。攻击者可以删除该文件,使用管理员帐户选择的凭据进行安装过程,最后在服务器上执行任意代码。 如需观看视频,请点击此处查看原文https://blog.ripstech.com/2018/wordpress-file-delete-to-code-execution/ 技术细节 当用户输入传递文件删除功能时,会发生任意文件删除漏洞。在PHP中,当unlink()调用该函数,并且用户输入可能会影响部分或整个参数$filename(表示要删除的文件的路径)时,会发生这种情况,而WordPress不会进行适当的处理。 在该wp-includes/post.php文件中找到了在WordPress Core中使这个漏洞成为可能的代码部分: WordPress内核中一个任意文件删除漏洞,可导致攻击者执行任意代码 在wp_delete_attachement()上面显示的功能中,$meta[‘thumb’]呼叫中使用的内容unlink()未经过任何处理。这段代码的目的是在删除图像的同时删除图像的缩略图。在WordPress中通过媒体管理器上传的图像被表示为附属类型的帖子。该值$meta[‘thumb’]从数据库中检索,并保存为表示图像的文章的自定义字段2。因此,在数据库检索和关键函数调用之间使用unlink(),表示缩略图文件名的值不经过任何清理或检查。如果该值在保存到数据库之前也没有经过任何安全措施,我们将在下一个代码列表中看到情况,我们有一个二阶任意文件删除漏洞。 WordPress内核中一个任意文件删除漏洞,可导致攻击者执行任意代码 此代码片段/wp-admin/post.php代表了附件中属于附件的缩略图的文件名如何保存到数据库中。在从保存在$_POST[‘thumb’]数据库中的用户输入中检索和保存到数据库wp_update_attachment_metadata()之间没有任何安全措施,以确保该值代表正在编辑的附件的缩略图。$_POST[‘thumb’]对于任何文件的路径,这个值可以保存到WordPress上传目录的相对路径中,当附件被删除时,该文件将被删除,如第一列表中所示。 临时修复程序 在编写此篇文章时,此漏洞在WordPress内核中仍未被修复。正因为这样,我们开发了一个临时修复程序。通过将修复程序添加到functions.php当前活动的主题/子主题文件中,可以将修复程序集成到现有的WordPress安装中。 WordPress内核中一个任意文件删除漏洞,可导致攻击者执行任意代码 所有提供的修复程序都会挂接到wp_update_attachement_metadata()调用中,并确保为元值提供的数据thumb不包含任何使路径成为可能的部分。因此,不能删除与安全相关的任何文件。 我们所提供的修复方案属于临时修复,以防止攻击。我们无法监督WordPress插件的所有可能的向后兼容性问题,因此建议您谨慎的对WordPress文件进行任何修改。 时间线 总结 在这文章中,我们介绍了WordPress内核中引入了一个任意文件删除漏洞,它允许任何具有作者权限的用户完全接管WordPress网站,并在服务器上执行任意代码。该漏洞去年已报告给WordPress安全团队,但在编写本文时仍然没有作任何修复。 为了提高对此漏洞的认识,我们决定发布一些细节和修复程序。使用我们的安全分析解决方案可以轻松发现漏洞,我们确信这个问题已经被许多研究人员所了解。尽管用户帐户的需求阻止了任意WordPress站点的大规模开发,但共享多个用户帐户的WordPress站点应该应用此修复程序。 如果有不懂的、欢迎加入我们学派吧。一起学习交流。右上角站长群
学派吧- 今天小编看到群里的兄弟说 他的wordpress无法上传图片。看到后。我看了下资料。并发给了他解决方法。等待测试结果。 报错: 网上的方法千篇一律,要么修改服务器设置,要么改.htaccess文件,而今天为大家提供一种更实用的方法,利用wp的过滤器来修复此http错误。将下面的代码添加到主题的functions.php文件中即可。 add_filter( 'wp_image_editors', 'change_graphic_lib' ); function change_graphic_lib($array) { return array( 'WP_Image_Editor_GD', 'WP_Image_Editor_Imagick' ); } 如果各位朋友有更好的解决方法,欢迎投稿到我们学派吧。在此谢谢关注我们学派吧的所有网友。
前言 今天小编一直在处理关于wprdpress无法分享问题、网上教程看了很多。基本上操作相同、但是主题不同,有些办法是行不通的。 今天我把操作的流程截图记录下来,已被其他网友使用。 开始操作 1:解决百度分享代码无法在https模式下使用的问题 下载百度分享代码到本地,下载地址:https://github.com/hrwhisper/baiduShare 使用方法: static文件夹放在网站的根目录下,并将对应的百度分享代码中, 主要修改地方为当前主题的js调用文件,我的是在/wp-content/themes/Git-alpha/assets/js/文件里面 把http://bdimg.share.baidu.com/改为自己的域名,记得带上https:// 然后通过审核元素、看看是否还有什么错误。
学派吧-搜集一款简单、快捷的 代码替换软件。可针对asp、php、JSP、html 等主流程序 为了防止恶意下载、请加我们的站长群。找管理索要。 [pay point=”10″][/pay]
[v_tips]502 Bad Gateway错误的含义是什么?[/v_tips] 502 Bad Gateway错误是个HTTP状态代码,意味着互联网上的一台服务器收到了来自另一台服务器的无效响应。用技术性更强的话来说,502 Bad Gateway意味着代理(网关)服务器无法获得来自上游服务器的有效响应或任何响应。 W3.org的官方文档指出,这与以5(5xxx)开头的HTTP状态代码与几台服务器之间通信不畅时发生的错误有关。 如果你在网站上看到502 Bad Gateway错误,表明源服务器向另一台充当网关或代理的服务器发送了无效响应。要经过一番棘手的调查才能找出问题具体出在哪里。不过,你可以遵循几个基本的排查步骤来解决这个问题。 [v_notice]如何解决502 Bad Gateway错误(3种可能的办法)[/v_notice] 1:检查服务器 如果你看到图中所示的错误,很可能问题出在Web服务器。 不妨检查一下Web服务器配置,本例中服务器运行Nginx。WordPress在PHP和MySQL上运行。所以在Nginx中,我们需要检查PHP文件是如何处理的。在Nginx服务器部分找到“location ~ \.php$”。 ssh@your_ip -p7022 从图中所示的Nginx配置来看,PHP文件由在端口9000运行的fastcgi来处理。 不妨检查端口上运行的是什么。 netstat -pltn | grep 9000 如果你在执行该命令后没看到任何结果,表明进程已终结。这是你看到502 Bad Gateway错误的原因。 在最新版CentOS和Ubuntu中,可以调用此命令来查看应该从哪里运行进程: systemctl list-unit-files | grep fpm 执行该命令来运行服务: systemctl start php7.0-fpm 现在,进入到Web浏览器,检查你的网站。 如果你使用CloudFlare,看到如下图所示的502 Bad Gateway错误,你的Web服务器极有可能是宕机了。可以尝试重启Apache或Nginx,这取决于你使用哪种Web服务器。 2. 清除缓存 如果已采用第一个办法,但还是看到502 Bad Gateway错误,那么你的Web浏览器仍依赖缓存。我们得告诉Web浏览器从网站加载最新版本。为此,我们可以按下键盘上的Ctrl + F5(Windows/Linux)、工具栏中的Shift + Reload按钮(Safari浏览器),或者CMD + Shift + R(针对Mac用户的Chrome和Firefox)。 3. 禁用CDN 如果你在使用CloudFlare,可以尝试暂时禁用CDN。 4. 检查脚本 如前所述,502 Bad Gateway错误是由于Web服务器出了问题。比如说,有时候,php进程因使用高端内存(high memory)而被服务器终结。这个终结过程会在一段时间后终止请求,这也会导致网站宕机。但是网站通常会自动可以访问,因为这时PHP进程重新生成。为了永久解决这个问题,要检查哪个php脚本在使用高端内存。 5. 检查插件和主题 排查哪个插件导致错误很简单。即使我们无法访问WordPress后端,也可以通过重命名插件目录,一次性禁用所有插件。为此,使用SSH连接到你的服务器。请注意:你也可以使用FTP客户软件(比如FileZilla)来执行此操作。 你可以逐个启用插件,按照以下步骤操作: 进入到wp-content目录,我们可以看到没有插件目录,我们已对其重命名。 不妨创建一个插件目录,并将一个插件移过去。这会自动启用该插件。 有时,排查WordPress错误比我们想象的要容易,但有时也可能很难解决。 当然,如果你的WordPress VPS由服务提供商托管,无需为服务器操心,提供商的技术支持团队会马上帮你调查和解决这个502 Bad Gateway问题。他们随时待命,能够解答任何问题或要求。 欢迎加入我们的QQ群,进行讨论学习 学派吧
现在有很多朋友想自己做个博客、或者一个展示页面,如今要实现自己的博客网站已经很简单了。这几天我就尝试了一下,随便记录下来,给网友分享下 做自己的博客是需要一些东西的 1:域名:国内一些大型的网络公司的都可以的 阿里云、腾讯云 景安云、西部云、 2 :服务器:现在服务器太多了。五花八门、很多人都不知道如何下手、小编今天给大家简单介绍下、阿里、腾讯、大公司、适合会点运维的朋友。他们不负责环境等问题的处理的 而我们网站、选择的是景安快云vps、价格便宜、售后好、推荐代理购买。价格更优惠 www.sq9.cn ,小编只是建议 3: WordPress程序安装了、 举例:以景安快云vps为例: 首先www.sq9.cn 注册会员、联系客服索要折扣、 然后开通、系统建议选择 centOS 7.2 64位 挺稳定的 然后安装宝塔: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh 然后以后、进入宝塔、会选择环境安装、学派吧建议 安装第二个 apache+php7.1+mysql5.5 1:安装完毕后、点网站管理、创建网站、FTP、数据库、 2:下载程序、通过FTP工具或者宝塔面板上传WordPress 3:安装wordpress。浏览器地址栏输入服务器商给的ip,出现安装提示页面 4:输入数据库信息、开始安装,进入安装页面, 5:然后安装完成: 6:打开浏览器 输入IP 。你的博客就出来了。 至此,整个过程完成了,你可以自己去后台去选择主题,添加插件,发表博客了。 很多朋友感觉这个主题不好看。可以去搜索一下 好看的主题、下载下来 进行安装、如又不懂、欢迎加我们右上角的QQ群。 学习交流
[v_tips]今天有个客户找到我们学派吧、咨询wordpress搬迁以后、上传图片无法显示的问题、我们协助客户看了下、上传图片以后,在空间里没有这个图片、打开上传的图片地址提示404错误 我们先是检查了wp-config.php配置文件。没有任何问题、[/v_tips] 经过排除图片名称及目录权限等问题后,最终发现原来是数据库的问题。 进入PHPMyAdmin数据库,查看一下wp_options表里的upload_path键值,看看路径是不是wp-content/uploads,如果不是这个路径,将路径修改成wp-content/uploads然后保存。(这里的wp_options是默认的数据表前缀:wp_ ,也许在建站的时候用的并非这个前缀。但是也能找到options,然后在里面查看upload_path键值内容。确保为wp-content/uploads)一般会出现在第二页。如下图: 修改后,确认即可,你会发现问题已经解决了。这里主要是你搬家前的服务器和现在用的服务器类型不同造成的。 不懂服务器、建站方面的知识,请关注我们学派吧、一起学习 ,一起交流。
这两天没事、也看下怎么给导航栏加上点图标,稍微好看点。哈哈 这个也是请教了朋友,在做好了。 下面我按操作。保存下教程 1:http://www.iconfont.cn/ 先去注册个账户、 font-class引用 [v_tips]font-class是unicode使用方式的一种变种,主要是解决unicode书写不直观,语意不明确的问题。 与unicode使用方式相比,具有如下特点: 兼容性良好,支持ie8+,及所有现代浏览器。 相比于unicode语意明确,书写更直观。可以很容易分辨这个icon是什么。 因为使用class来定义图标,所以当要替换图标时,只需要修改class里面的unicode引用。 不过因为本质上还是使用的字体,所以多色图标还是不支持的。 使用步骤如下: 第一步:拷贝项目下面生成的fontclass代码: //at.alicdn.com/t/font_8d5l8fzk5b87iudi.css 第二步:挑选相应图标并获取类名,应用于页面: [/v_tips] 有不懂的朋友 可以加我Q或者发评论 联系 QQ 690624
如果我使用服务器来存放这些视频,怎么调用呢? 使用以下的代码来插入自己的网站的视频: 代码里面的 http://www.player.com/v.swf 要换成你自己的视频的的地址,即你上传到网站空间上的视频的路径。
很多朋友网站访问量稍微增加点、就突然报错,出现数据库挂的情况。一般都是mysql服务设置不当,导致mysql连接数量超过限定值,或者应用程序设计有问题,导致大量休眠连接不能及时释放。 mysql -u root -p 执行指令 show processlist; 查看当前连接数量。 如果进程过多,或存在大量超时的休眠sleep连接,编辑/etc/mysql/my.cnf vim /etc/mysql/my.cnf 在[mysqld]字段处,添加,或去掉注释 max_connections = 500 #增加mysql连接数 wait_timeout = 10 #断开超过10秒的连接 有些没有经过仔细设计,或者需要启用服务器上特定模块的插件,很可能会导致这类的问题。
现在,很多主题作者都是用 WordPress 多站点网络来做主题演示站,那就遇到一个数据部署的问题,每次都要重新设置一些基本的选项,导入文章和附件等等,实在是麻烦。今天倡萌推荐一个专门解决这个问题的插件 Multisite Cloner ,它可以很方便地将网络中任何一个站点的设置和数据都克隆到另外一个站点,包括设置、文章和其他内容、主题选项和上传的文件等等。 [v_blue]在网络中安装启用 Multisite Cloner 插件以后,在设置界面选择一个站点作为默认站点:[/v_blue] [v_blue]然后在站点列表中,点击站点下的 Clone 即可:[/v_blue] 在插件安装界面搜索 Multisite Cloner 即可在线安装
伪静态是需要服务器支持的,比如mod_rewrite模块,具体可以咨询服务器管理员,另外部分服务器可能不支持中文链接,这个需要注意。 设置方法 进入WordPress后台设置>固定链接,其中第一个“朴素”就是默认的设置,后面几个是WordPress给出的几个可选项,如果都不是你喜欢的链接格式,那么也可以使用最后一个自定义结构。使用自定义结构的话,就需要先了解下有哪些可以设置的参数了。 WordPress官方文档列表如下: %year% 基于文章发布年份,比如2007; %monthnum% 基于文章发布月份,比如05; %day% 基于文章发布当日,比如28; %hour% 基于文章发布小时数,比如15; %minute% 基于文章发布分钟数,比如43; %second% 基于文章发布秒数,比如33; %postname% 基于文章的postname,其值为撰写时指定的缩略名,不指定缩略名时是文章标题; %post_id% 基于文章post_id,比如423; %category% 基于文章分类,子分类会处理成“分类/子分类”这种形式; %author% 基于文章作者名。 将上述参数进行组合,即可得到WordPress的固定链接形式。网上常见的几种设置方法: /%year%/%monthnum%/%day%/%postname%/ /%year%/%monthnum%/%postname%/ /%year%/%monthnum%/%day%/%postname%.html /%year%/%monthnum%/%postname%.html /%category%/%postname%.html /%category%/%post_id% /%postname%.html /%post_id%.html 我们一般使用/%postname%.html或者/%post_id%.html。 设置好了以后,保存即可完成固定链接和伪静态的设置了
WordPress无法建立到WordPress.org的安全连接的问题,目前找到两个解决方法,都试试看,哪个不行就换另一个吧! 1、修改resolv.conf里的IP地址 vi /etc/resolv.conf 修改为google的DNS或其他 nameserver 8.8.8.8 nameserver 8.8.4.4 保存; 说白了,就是修改成谷歌的dns罢了,但是,我测试好像依然不行,那就试试方法2吧。 2、首先ping一下api.wordpress.org的服务器IP得到66.155.40.249 打开host文件添加 66.155.40.249 api.wordpress.org 保存,刷新后台,完美!! win系统下host文件路径:c:\windows\system32\drivers\etc linux系统的host文件路 #vi /etc/hosts 添加如下一行到文件末尾 66.155.40.249 api.wordpress.org 修改后重启网络服务 /etc/init.d/network restart 都试试吧,因为我也没弄明白,具体是哪个把这个问题解决了。。哈哈
因为LNMP 0.9禁用了部分存在危险的PHP函数,其中包含了scandir(),出现的情况就是 Warning: scandir() has been disabled for security reasons in /home/wwwroot/yourdomain.com/wp-includes/class-wp-theme.php on line 978 Warning: Invalid argument supplied for foreach() in /home/wwwroot/yourdomain.com/wp-includes/class-wp-theme.php on line 981 我们去编辑下php.ini文件即可:vi /usr/local/php/etc/php.ini;寻找disable_functions字符串,将后面的scandir删除掉。 重启PHP即可解决:/etc/init.d/php-fpm restart
问题解说 其实wordpress换域名需要到数据库进行操作的,首先,来分析一下换域名的几种常见情况; 一、换空间换域名 1、如果是上述问题,打包备份旧空间ftp内的所有文件,进旧站数据库phpmyadmin里导出你网站的数据库sql文件; 2、将备份的ftp所有文件上传至新的空间FTP内,将备份的sql上传到新空间的数据库phpmyadmin内; 3、打开新空间ftp的网站根目录找到wp-config.php文件,编辑它(php文件不要用txt去编辑),进行编辑配置新的数据库连接信息; 4、去新的空间的数据库phpmyadmin里,做sql批量换域名处理(详见下面教程二) 二、仅换域名,没有换空间 打开新空间的phpmyadmin(数据库控制面板) 然后选择新的数据库名,点击后,进入wp_开头的大于等于11个的表,然后选择选项卡里的sql,如图: 然后就是进行sql批量处理的命令了: UPDATE wp_options SET option_value = replace( option_value, 'http://www.old.com', 'http://www.new.com' ) WHERE option_name = 'home' OR option_name = 'siteurl'; UPDATE wp_posts SET post_content = replace( post_content, 'http://www.old.com', 'http://www.new.com' ) ; UPDATE wp_posts SET guid = replace( guid, 'http://www.old.com', 'http://www.new.com' ) ; old代表旧域名、new代表新域名,将上面的执行语句修改为你们自己的,然后点击执行即可! 到这一步,就基本全OK了。。。当然换域名的途中也会遇到各种问题,出现问题了可以回帖或者加入我们的技术群群求帮助哈!
刚刚为SEO博客的新服务器进行了配置,用filezilla架设了ftp服务器,可是在用flashfxp进行连接的时候发现出pasv模式失败,连接很慢,传不了文件,经过检查学习,解决问题!特把相关资料分享出来! 1.什么是ftp中的PASV和PORT模式 FTP的连接一般有两种:一种是客户程和服务器传输命令的,另一种是数据传送的连接。FTP服务程序一般会支两种不同的模式,一种是Port模式,一种是Passive模式(Pasv Mode)。 Port模式: 当客户端向服务端连接后,使用的是Port模式,那么客户端会发送一条命令告诉服务端(客户端在本地打开了一个端口在等着你进行数据连接),当服务端收到这个Port命令后就会向客户端打开的那个端口进行连接,这种数据连接就生成了。 Pasv模式: 当客户端C向服务端S连接后,服务端S会发信息给客户端C,这个信息是(服务端S在本地打开了一个端口M,你现在去连接我吧),当客户端C收到这个信息后,就可以向服务端S的M端口进行连接,连接成功后,数据连接也建立了。 从上面的解释中,可以看到两种模式主要的不同是数据连接建立的不同,对于Port模式,是客户端C在本地打开一个端口等服务端S去连接建立数据连接;而Pasv模式就是服务端S打开一个端口等待客户端C去建立一个数据连接。 FTP需要2个端口,一个端口是作为控制连接端口,也就是21这个端口,用于发送指令给服务器以及等待服务器响应;另一个端口是数据传输端口,端口号为20(仅PORT模式),是用来建立数据传输通道的,主要有3个作用: 1.从客户向服务器发送一个文件。 2.从服务器向客户发送一个文件。 3.从服务器向客户发送文件或目录列表。 注意:所有FTP服务器软件都支持PORT方式,大部分FTP服务器软件PORT方式和PASV方式都支持,有些FTP服务器不支持PASV方式都支持,故造成了PASV 模式失败,正在尝试 PORT错误 或者 数据Sock错误。对症下药,解决的方法其实很简单――取消PASV模式。 2.具体的方法 1)在ie中如何启用或者取消PASV模式: 如果要在ie里启用或关闭PASV方式,先打开IE,在菜单里选择:工具 -> Internet选项 -> 高级,在“使用被动ftp”前面打上钩或者去掉钩,不过需要IE6.0以上才支持。 2)FTP下载工具取消被动模式的方法: ★Cute FTP 3.5英文版:FTP―>Settings―>Options―>Firewall,将“PASV mode”前复选框中的打勾去掉。 ★Cute FTP3.5中文版:FTP―>设置―>选项―>防火墙,“PASV方式(A)”前复选框中的打勾去掉。 ★Cute FTP4.0中文版:右击你所建立的ftp站点―>选择属性(properties)―>去掉”use PASV mod” 选择项 ★Cute FTP Pro2.0中文版:编辑―>全局设置―>连接―>连接类型,“PASV/PORT”下拉选项菜单选择PORT。 ★Leap FTP2.7.2:Sites―>Site Manager―>Advanced,将“Use PASV mode”前复选框中的打勾去掉。 ★flashfxp: 选项->参数->代理->去掉“使用被动模式” ★flashget: 选项->参数->代理服务器->编辑->将“Use PASV mode”前复选框中的打勾去掉。 3.其他补充 如果你用Serv-U架设FTP,那么Serv-U默认配置下两种方式都支持。 如果要关闭PASV方式,打开Serv-U,进入 Domains -> user.dns0755.net -> Settings -> Advanced -> 把“Allow passive mode data transfers”前面的钩去掉。 在 Serv-U的Local Server -> Settings -> Advanced -> PASV port range里,填入给PASV模式使用的本地端口范围,如60000-60020。请把端口范围限制在20个以内。之后,再在防火墙里打开这个范围的端口就可以了。 如果你用Filezilla架设FTP,那么filezilla默认配置下两种方式都支持。我在FileZilla Server 设置菜单里被动模式选项(Passive Mode Settings)选项,进入被动模式设置。 选中启动被动模式端口范围的选项,输入3000~3020端口范围,相应的端口要在防火墙里添加放行。