814247614 发表于 2018-12-24 08:36:10

php通过ftp协议上传文件


[*]
[*]
[*]
[*]
[*]
[*]function send(){
[*]document.form2012.action="up.php";
[*]document.form2012.submit();
[*]}
[*]function save(){
[*]document.form2012.action="up_save.php";
[*]document.form2012.submit();
[*]}
[*]
[*]
[*]
[*]
[*]
[*]
[*]   
[*]         
[*]      " />
[*]      简介:
[*]      所属分类:
[*]      标签:" />
[*]      添加视频:   
[*]   
[*]
[*]   
[*]   
[*]    分段视频列表:
[*]         
[*]            
[*]                序号
[*]                在页面显示的名称标题
[*]                文件名
[*]            
[*]         
[*]            
[*]               
[*]               
[*]                  " />
[*]               
[*]               
[*]            
[*]         
[*]         
[*]
[*]   
[*]   
[*]   
[*]   
[*]   
[*]    封面:
[*]
[*]
[*]
[*]   
[*]    标题:
[*]    简介:
[*]    所属分类:1
[*]    标签:
[*]    售价:
[*]   
[*]   
[*]   
[*]   
[*]   
[*]   
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[*]

  问题:
  今天公司将网站从linux迁到windows服务器,突然上传出现问题了,文件上传不了,报错:
  Warning: file_exists() : open_basedir restriction in effect. File(C:\WINDOWS\Temp\php6F44.tmp) is not within the allowed path(s): (D:\htdocs)...
  权限问题:不允许操作服务器设置的路径之外的文件路径。
  权限问题,不允许操作服务器设置的路径之外的文件路径。
  解决办法:找网管(或空间商)修改,apache下的httpd.conf   或者   php下的php.ini。
  修改apache中(级别最高,父级别,其权限币php.ini还高):
  记得后面有两个路径:一个是指定的,另一个是默认的(C:Windows\Temp)。


[*]
[*]   
[*]      Options -Indexes FollowSymLinks
[*]   
[*]    ServerAdmin admin@zf.com
[*]    DocumentRoot "../vhosts/zf.com"
[*]    ServerName zf.com:80
[*]    ServerAlias *.zf.com
[*]    ErrorLog logs/zf.com-error_log
[*]    php_admin_value open_basedir "D:/htdocs;C:\Windows\Temp;"
[*]

  修改php.ini中


[*]open_basedir = "D:/htdocs;C:/WINDOWS/Temp;

  更详细的关于:open_basedir配置的
  http://chenling1018.blog.163.com/blog/static/148025420087250851438/
  http://tunps.com/php-open_basedir
  http://www.cnblogs.com/ybbqg/archive/2012/05/04/2482479.html
  注意php.ini设置包括:


[*]upload_max_filesize = 1024M
[*]post_max_size = 1024M
[*]max_input_time = 3600
[*]memory_limit = 32M
[*]max_execution_time = 0//php执行时间无限制

  max_execution_time默认是30秒,没有设置这个可能报错:
  Fatal error: Maximum execution time of 30 seconds exceeded
  注意:当php运行于安全模式时,set_time_limit(0)此功能不能生效。除了关闭安全模式或改变php.ini中的max_execution_time时间限制,没有别的办法。
  这里有一篇关于php通过ftp上传大文件的研究报告:
  http://wenku.baidu.com/view/daa108687e21af45b307a8e3.html

大部分PHP代码执行时间都不会很久。但是有些时候,比如等待图片上传,可能执行时间过长导致超时。
  php.ini 中缺省的最长执行时间是 30 秒,这是由 php.ini 中的 max_execution_time变量指定,倘若你有一个需要颇多时间才能完成的工作,例如要发送很多电子邮件给大量收件者,或者要进行繁重的数据分析工作,服务器会在 30秒后强行中止正在执行的程序,如何解决这个问题呢。
最简单当然是修改 php.ini 中 max_execution_time 的数值,不过不是所有人都有权修改 php.ini,例如使用网页寄存的开发人员,服务器上的 php.ini 由很多网站共同使用,所以不能随意修改。
另一个办法是在 PHP 程序中加入 ini_set('max_execution_time', '0'),数值 0 表示没有执行时间的限制,你的程序需要跑多久便跑多久。若果你的程序仍在测试阶段,推荐你把时限设置一个实数,以免程序的错误把服务器当掉。


[*]

  同时可以使用ini_get把原来设置的max_execution_time保存下来,在进行完操作时回复原来的设定值。
  当然如果你只是想想php的配置信息用phpinfo()更方便
  ini_set具有更改php.ini设置的功能。此函数接收两个参数:需要调整的配置变量名,以及变量的新值。   例如,在某脚本出现时增加最大执行时间(maximum execution time):


[*]

  这样的设置将仅仅影响被设置的脚本。一旦脚本执行完毕,该变量将自动恢复到原始值。



页: [1]
查看完整版本: php通过ftp协议上传文件