php通過ftp協議上傳檔案
- <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
- <html xmlns=“http://www.w3.org/1999/xhtml”>
- <head>
- <meta http-equiv=“Content-Type” content=“text/html; charset=GBK” />
- <script>
- function send(){
- document.form2012.action=“up.php”;
- document.form2012.submit();
- }
- function save(){
- document.form2012.action=“up_save.php”;
- document.form2012.submit();
- }
- </script>
- </head>
- <body>
- <?php
- $username=`test10086`;
- if($_POST){
- $postid=$_POST[`postid`];
- if($postid==`1`){
- $conn_id=ftp_connect(`test.com`,`6305`) or die(“連線失敗”);
- $ftp_user = “root”;
- $ftp_pass = “123456”;
- if(@ftp_login($conn_id, $ftp_user, $ftp_pass)){
- //echo `登入ftp成功`;
- }
- else{
- echo `登入ftp失敗`;
- }
- $file_name=$_FILES[“file”][“name”][`0`];
- $file_size=$_FILES[“file”][“size”][`0`];
- $temp_url=$_FILES[“file”][“tmp_name”][`0`];
- $source_file=$temp_url;
- $remote_file=`www.test.com/test/upvideo_files/`.$file_name;
- if(ftp_put($conn_id, $remote_file, $source_file, FTP_BINARY)){
- //echo `檔案上傳成功`;
- }
- else{
- echo `檔案上傳失敗`;
- }
- $file_name01=$_FILES[“file”][“name”][`1`];
- $temp_url01=$_FILES[“file”][“tmp_name”][`1`];
- $source_file01=$temp_url01;
- $remote_file01=`www.test.com/test/upvideo_images/`.$file_name01;
- if(ftp_put($conn_id, $remote_file01, $source_file01, FTP_BINARY)){
- //echo `圖片上傳成功`;
- }
- else{
- echo `圖片上傳失敗`;
- }
- ftp_close($conn_id);
- }
- elseif($postid==`2`){
- $conn_id=ftp_connect(`test.com`,`6305`) or die(“連線失敗”);
- $ftp_user = “root”;
- $ftp_pass = “123456”;
- if(@ftp_login($conn_id, $ftp_user, $ftp_pass)){
- //echo `登入ftp成功`;
- }
- else{
- echo `登入ftp失敗`;
- }
- $file_name=$_FILES[“file”][“name”];
- $file_size=$_FILES[“file”][“size”];
- $temp_url=$_FILES[“file”][“tmp_name”][`0`];
- $source_file=$temp_url;
- $remote_file=`www.test.com/test/upvideo_files/`.$file_name;
- if(ftp_put($conn_id, $remote_file, $source_file, FTP_BINARY)){
- //echo `檔案上傳成功`;
- }
- else{
- echo `檔案上傳失敗`;
- }
- ftp_close($conn_id);
- }
- }
- ?>
- <?php
- if($_GET[`fid`]){
- $fid=$_GET[`fid`];
- include(`../conn.php`);
- $sql=“select * from `upload_video` where `id`=`$fid`;”;
- $query=mysql_query($sql,$conn);
- $row=mysql_fetch_array($query);
- ?>
- <form action=“” method=“post” enctype=“multipart/form-data” name=“form2012”>
- <input type=“hidden” name=“postid” value=“2” />
- <input type=“hidden” name=“fid” value=“<?php echo $fid?>” />
- 標題:<input type=“text” name=“title” value=“<?php echo $row[`title`]?>” /><br />
- 簡介:<textarea name=“introduce”><?php echo $row[`introduce`]?></textarea><br />
- 所屬分類:<?php echo $row[`sortid`]?><br />
- 標籤:<input type=“text” name=“tag” value=“<?php echo $row[`tag`]?>” /><br />
- 售價:<input type=“text” name=“gold” value=“<?php echo $row[`gold`]?>” /><br />
- 新增視訊: <input type=“file” name=“file” />
- <input type=“button” value=“新增” onclick=“send();”>
- <br /><br />
- 分段視訊列表:<br />
- <table border=“1” style=“width:400px;border-collapse:collapse;text-align:center” cellspacing=“0” cellpadding=“0”>
- <tr>
- <td>序號</td>
- <td>在頁面顯示的名稱標題</td>
- <td>檔名</td>
- </tr>
- <?php
- $sql03=“select * from `upload_video` where `username`=`$username` and `fid`=`$fid`”;
- $query03=mysql_query($sql03);
- $i=1;
- while($row03=mysql_fetch_array($query03)){
- ?>
- <tr>
- <td><?php echo $i++?></td>
- <td>
- <input type=“hidden” name=“upnameid[]” value=“<?php echo $row03[`id`]?>” />
- <input type=“text” name=“upname[]” value=“<?php echo $row03[`small_title`]?>” />
- </td>
- <td><?php echo $row03[`file_name`]?></td>
- </tr>
- <?
- }
- ?>
- </table>
- <br />
- <br />
- <a href=“#” onclick=“save();”><img src=“../images/v_up.jpg” /></a>
- </form>
- <br />
- 封面:<br /><img src=“<?php echo $row[`img_url`]?>” width=“150” height=“120” border=“1” /><br />
-
- <?php
- }else{ //下面是第一次新增檔案
- ?>
- <form action=“” method=“post” enctype=“multipart/form-data” name=“form2012”>
- <input type=“hidden” name=“postid” id=“postid” value=“1” />
- 標題:<input type=“text” name=“title” /><br />
- 簡介:<textarea name=“introduce”></textarea><br />
- 所屬分類:1<br />
- 標籤:<input type=“text” name=“tag” /><br />
- 售價:<input type=“text” name=“gold” /><br />
- <input type=“file” name=“file[]” /><br />
- <input type=“file” name=“file[]” /><br />
- <input type=“button” value=“新增” onclick=“send();”>
- <br />
- <br />
- <a href=“#” onclick=“save();”><img src=“../images/v_up.jpg” /></a>
- </form>
- <br />
- <?php
- }
- ?>
- </body>
- </html>
問題:
今天公司將網站從linux遷到windows伺服器,突然上傳出現問題了,檔案上傳不了,報錯:
Warning: file_exists() [function.file-exists]: open_basedir restriction in effect. File(C:WINDOWSTempphp6F44.tmp) is not within the allowed path(s): (D:htdocs)…
許可權問題:不允許操作伺服器設定的路徑之外的檔案路徑。
許可權問題,不允許操作伺服器設定的路徑之外的檔案路徑。
解決辦法:找網管(或空間商)修改,apache下的httpd.conf 或者 php下的php.ini。
修改apache中(級別最高,父級別,其許可權幣php.ini還高):
記得後面有兩個路徑:一個是指定的,另一個是預設的(C:WindowsTemp)。
- <virtualhost *>
- <directory “../vhosts/zf.com”>
- Options -Indexes FollowSymLinks
- </directory>
- 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:WindowsTemp;”
- </virtualhost>
修改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.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 表示沒有執行時間的限制,你的程式需要跑多久便跑多久。若果你的程式仍在測試階段,推薦你把時限設定一個實數,以免程式的錯誤把伺服器當掉。
- <?php
- //max_execution_time=100;
- ini_set(“max_execution_time”, 1); //用此function才能真正在執行時設定
- for($i=1; $i< 100000; $i++)
- {
- echo “No. {$i}
“; - echo `<br />`;
- flush();
- }
- ?>
同時可以使用ini_get把原來設定的max_execution_time儲存下來,在進行完操作時回覆原來的設定值。
當然如果你只是想想php的配置資訊用phpinfo()更方便
ini_set具有更改php.ini設定的功能。此函式接收兩個引數:需要調整的配置變數名,以及變數的新值。 例如,在某指令碼出現時增加最大執行時間(maximum execution time):
- <?php
- ini_set(`max_execution_time`, 600)
- // more code
- ?>
這樣的設定將僅僅影響被設定的指令碼。一旦指令碼執行完畢,該變數將自動恢復到原始值。
本文轉自許琴 51CTO部落格,原文連結:http://blog.51cto.com/xuqin/940955,如需轉載請自行聯絡原作者
相關文章
- jftp通過sftp協議上傳檔案FTP協議
- PHP ftp上傳檔案PHPFTP
- Windows 機器通過 FTP 上傳檔案WindowsFTP
- Raysync檔案傳輸協議(FTP)協議FTP
- PHP如何通過CURL上傳檔案PHP
- 在php中通過curl上傳檔案PHP
- linux下遠端傳送檔案命令,通過ssh協議傳輸檔案Linux協議
- php檔案上傳之多檔案上傳PHP
- c# 上傳FTP檔案C#FTP
- 定時ftp上傳,如何設定定時ftp上傳檔案FTP
- Qt通過Http上傳檔案(路過)QTHTTP
- 實現一個基於FTP協議的程式——檔案上傳下載器(十三)FTP協議
- 通過配置檔案(.htaccess)實現檔案上傳
- PHP上傳檔案PHP
- PHP 檔案上傳PHP
- 利用ftp自動上傳檔案FTP
- PHP7 以後使用 CURL 連結 FTP 上傳檔案PHPFTP
- 從ftp上傳下載檔案(二)FTP
- 從ftp上傳下載檔案(一)FTP
- PHP 分片上傳檔案PHP
- PHP--檔案上傳PHP
- 檔案傳輸協議(FTP)的安全性現狀你瞭解多少?協議FTP
- 檔案傳輸協議介紹協議
- VB程式設計師的FTP程式設計指南1.1-檔案傳輸協議FTP概述 (轉)程式設計師FTP協議
- FTP上傳檔案速度太慢怎麼辦?FTP
- Java上傳檔案到ftp伺服器JavaFTP伺服器
- ftp上傳的檔案指定許可權FTP
- php檔案上傳大小限制PHP
- php uploadify上傳檔案PHP
- php單個檔案上傳PHP
- php多個檔案上傳PHP
- 4種傳輸協議設定,檔案傳輸協議如何選擇?協議
- Linux基礎命令---mput上傳ftp檔案LinuxFTP
- 檔案傳輸協議的五種安全檔案傳輸替代方案協議
- 還在使用檔案傳輸協議傳輸機密檔案?你可能是對檔案傳輸協議有什麼誤會協議
- vue+axio通過獲取dom元素上傳檔案Vue
- PHP上傳檔案設計分析PHP
- git上傳過濾檔案Git