ftp在本地能往远程服务器上传文件,但是放到服务器上就不好使了
网站购买的万网的虚拟主机,无法修改php.ini,也没有办法是用.htaccess来修改上传文件大小,故上传大于10M的文件只好使用ftp方式,代码如下:
$ftp_server= "xxxx.xxxx.com";
$ftp_user_name= "xxxx";
$ftp_user_pass= "xxxxx";
$local_file = "D:/Lyb_0/zmsgx.mp4"; //本地文件
$server_file = "htdocs/videos/zmsgx.mp4"; //待上传后文件所在路径
$conn_id = ftp_connect($ftp_server); //联接FTP
$login_result = ftp_login($conn_id,$ftp_user_name,$ftp_user_pass) or die("Login error"); //登录
$fp=fopen($local_file,"r");
ftp_pasv($conn_id, true); //开启被动模式传输
//上传参数
if(ftp_fput($conn_id,$server_file,$fp,FTP_BINARY)) {
echo "Successfully uploaded $server_file\n";
}else{
echo "There was a problem while uploading $file\n";
}
//关闭连接
ftp_close($conn_id);
fclose($fp);
但是这段代码只在本地好使,放到服务器上就好使了,fopen($local_file,"r");无法打开本地文件。请问如何解决?
------解决思路----------------------
你先确认 fopen 是否可用
在服务器上所谓“本地文件”是指服务器上的文件
所以你使用 ftp 绕过 upload 限制的做法,是不现实的
------解决思路----------------------
$local_file
这个无法取到本地文件吧。
------解决思路----------------------
class Ftp{
public $ftpconn;
public static $_instance = array();
private function __construct($host,$username,$password) {
$this->ftpconn = ftp_connect($host);
$this->login($username, $password);
}
public function login($username, $password){
ftp_login($this->ftpconn, $username, $password);
}
public static function getInstance($host,$username,$password){
$key = md5($host.'-'.$username.'-'.$password);
if(!isset(self::$_instance[$key])
------解决思路----------------------
!(self::$_instance[$key] instanceof self)){
self::$_instance[$key] = new self($host, $username, $password);
}
return self::$_instance[$key];
}
public function __clone(){
trigger_error('该类禁止克隆',E_USER_ERROR);
}
public function __destruct() {
ftp_close($this->ftpconn);
}
public function nlist($dir){
$filelist = ftp_nlist($this->ftpconn, $dir);
return $filelist;
}
//切换当前目录的父目录
public function cdup(){
return ftp_cdup($this->ftpconn);
}
//在 FTP 服务器上改变当前目录
public function chdir($dir){
return @ftp_chdir($this->ftpconn, $dir);
}
//修改文件权限
public function chmod ($dir,$mode){
return ftp_chmod($this->ftpconn, $mode, $dir);
}
//删除文件
public function delete($filename){
return ftp_delete($this->ftpconn, $filename);
}
//请求运行一条 FTP 命令(true,false)
public function exec($command){
return ftp_exec($this->ftpconn,$command);
}
//从 FTP 服务器上下载一个文件并保存到本地一个已经打开的文件中
//mode传输模式只能为 (文本模式) FTP_ASCII 或 (二进制模式) FTP_BINARY 其中的一个。
public function fget ($handle,$remote_file,$mode,$resumepos = 0){
return ftp_fget($this->ftpconn,$handle,$remote_file,$mode,$resumepos);
}
//上传一个已经打开的文件到 FTP 服务器
//mode传输模式只能为 (文本模式) FTP_ASCII 或 (二进制模式) FTP_BINARY 其中的一个。
public function fput ($remote_file,$handle,$mode,$resumepos = 0 ){
return ftp_fput($this->ftpconn,$remote_file,$handle,$mode,$resumepos);
}
//返回当前 FTP 连接的各种不同的选项设置
public function get_option($option=FTP_TIMEOUT_SEC){
return ftp_get_option($this->ftpconn,$option);
}
//从 FTP 服务器上下载一个文件
public function get($local_file,$remote_file ,$mode,$resumepos=0){
return ftp_get($this->ftpconn,$local_file,$remote_file ,$mode,$resumepos);
}
//返回指定文件的最后修改时间
public function mdtm ($remote_file){
return ftp_mdtm ($this->ftpconn,$remote_file);
}
//建立新目录
public function mkdir($dir,$directory){
$this->chdir($dir);
return @ftp_mkdir($this->ftpconn,$directory);
}
//连续获取/发送文件(non-blocking)
public function nb_continue(){
return ftp_nb_continue($this->ftpconn);
}
//Retrieves a file from the FTP server and writes it to an open file (non-blocking)
public function nb_fget ($handle,$remote_file,$mode,$resumepos = 0){
return ftp_nb_fget ($this->ftpconn,$handle,$remote_file,$mode,$resumepos);
}
//Stores a file from an open file to the FTP server (non-blocking)
public function nb_fput ($remote_file,$handle,$mode,$resumepos = 0 ){
return ftp_nb_fput ($this->ftpconn,$remote_file,$handle,$mode,$resumepos);
}
//从 FTP 服务器上获取文件并写入本地文件(non-blocking)
public function nb_get ($local_file,$remote_file ,$mode,$resumepos=0){
return ftp_nb_get ($this->ftpconn,$local_file,$remote_file ,$mode,$resumepos);
}
//存储一个文件至 FTP 服务器(non-blocking)
public function nb_put ($remote_file ,$local_file,$mode,$resumepos=0){
return ftp_nb_put ($this->ftpconn,$remote_file ,$local_file,$mode,$resumepos);
}
//返回当前 FTP 被动模式是否打开
public function pasv($pasv){
return ftp_pasv($this->ftpconn,$pasv);
}
//上传文件到 FTP 服务器
public function put ($remote_file ,$local_file,$mode,$resumepos=0){
return ftp_put ($this->ftpconn,$remote_file ,$local_file,$mode,$resumepos);
}
//返回当前目录名
public function pwd (){
return ftp_pwd ($this->ftpconn);
}
//Sends an arbitrary command to an FTP server
public function raw ($command){
return ftp_raw ($this->ftpconn,$command);
}
//返回指定目录下文件的详细列表
public function rawlist($directory){
return ftp_rawlist($this->ftpconn,$directory);
}
//更改 FTP 服务器上的文件或目录名
public function rename($oldname ,$newname){
return ftp_rename($this->ftpconn,$oldname , $newname);
}
//删除 FTP 服务器上的一个目录
public function rmdir($directory){
return ftp_rmdir($this->ftpconn,$directory);
}
//设置各种 FTP 运行时选项
public function set_option ($option,$value){
return ftp_set_option ($this->ftpconn,$option,$value);
}
//向服务器发送 SITE 命令
public function site ($cmd){
return ftp_site ($this->ftpconn,$cmd);
}
//返回指定文件的大小
public function size ($remote_file){
return ftp_size ($this->ftpconn,$remote_file);
}
//Opens an Secure SSL-FTP connection
public function ssl_connect($host){
$this->ftpconn = ftp_ssl_connect($host);
}
//返回远程 FTP 服务器的操作系统类型
public function systype (){
return ftp_systype ($this->ftpconn);
}
}

DependencyInjection(DI)inPHPenhancescodeflexibilityandtestabilitybydecouplingdependencycreationfromusage.ToimplementDIeffectively:1)UseDIcontainersjudiciouslytoavoidover-engineering.2)Avoidconstructoroverloadbylimitingdependenciestothreeorfour.3)Adhe

到Improveyourphpwebsite的实力,UsEthestertate:1)emplastOpCodeCachingWithOpcachetCachetOspeedUpScriptInterpretation.2)优化的atabasequesquesquesquelies berselectingOnlynlynnellynnessaryfields.3)usecachingsystemssslikeremememememcachedisemcachedtoredtoredtoredsatabaseloadch.4)

是的,itispossibletosendMassemailswithp.1)uselibrarieslikeLikePhpMailerorSwiftMailerForeffitedEmailSending.2)enasledeLaysBetemailStoavoidSpamflagssspamflags.3)sylectynamicContentToimpovereveragement.4)

DependencyInjection(DI)inPHPisadesignpatternthatachievesInversionofControl(IoC)byallowingdependenciestobeinjectedintoclasses,enhancingmodularity,testability,andflexibility.DIdecouplesclassesfromspecificimplementations,makingcodemoremanageableandadapt

使用PHP发送电子邮件的最佳方法包括:1.使用PHP的mail()函数进行基本发送;2.使用PHPMailer库发送更复杂的HTML邮件;3.使用SendGrid等事务性邮件服务提高可靠性和分析能力。通过这些方法,可以确保邮件不仅到达收件箱,还能吸引收件人。

计算PHP多维数组的元素总数可以使用递归或迭代方法。1.递归方法通过遍历数组并递归处理嵌套数组来计数。2.迭代方法使用栈来模拟递归,避免深度问题。3.array_walk_recursive函数也能实现,但需手动计数。

在PHP中,do-while循环的特点是保证循环体至少执行一次,然后再根据条件决定是否继续循环。1)它在条件检查之前执行循环体,适合需要确保操作至少执行一次的场景,如用户输入验证和菜单系统。2)然而,do-while循环的语法可能导致新手困惑,且可能增加不必要的性能开销。

在PHP中高效地哈希字符串可以使用以下方法:1.使用md5函数进行快速哈希,但不适合密码存储。2.使用sha256函数提高安全性。3.使用password_hash函数处理密码,提供最高安全性和便捷性。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

记事本++7.3.1
好用且免费的代码编辑器

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。