- <!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_p_w_picpaths/'.$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="../p_w_picpaths/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="../p_w_picpaths/v_up.jpg" /></a>
- </form>
- <br />
- <?php
- }
- ?>
- </body>
- </html>
問題:php
今天公司將網站從linux遷到windows服務器,忽然上傳出現問題了,文件上傳不了,報錯:html
Warning: file_exists() [function.file-exists]: open_basedir restriction in effect. File(C:\WINDOWS\Temp\php6F44.tmp) is not within the allowed path(s): (D:\htdocs)...mysql
權限問題:不容許操做服務器設置的路徑以外的文件路徑。linux
權限問題,不容許操做服務器設置的路徑以外的文件路徑。web
解決辦法:找網管(或空間商)修改,apache下的httpd.conf 或者 php下的php.ini。sql
修改apache中(級別最高,父級別,其權限幣php.ini還高):apache
記得後面有兩個路徑:一個是指定的,另外一個是默認的(C:Windows\Temp)。windows
- <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:\Windows\Temp;"
- </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}\n";
- 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
- ?>
這樣的設置將僅僅影響被設置的腳本。一旦腳本執行完畢,該變量將自動恢復到原始值。