0

アパッチ、PHP、パイソン

この質問は、この Web サイトで何度も尋ねられましたが、python と php の両方に非常に慣れていないため、正しい方法を見つけるのは困難でした。

現在、クライアント側の一部は次のようになっています(ファイルを圧縮して送信します)

  1 #!/usr/bin/python
  2 
  3 import os
  4 import zipfile
  5 import sys
  6 import hashlib
  7 from poster.encode import multipart_encode
  8 from poster.streaminghttp import register_openers
  9 import urllib2
 10 
 11 def zip(src, dst):
 12     zf = zipfile.ZipFile("%s.zip" % (dst), "w", zipfile.ZIP_DEFLATED)
 13     abs_src = os.path.abspath(src)
 14     for dirname, subdirs, files in os.walk(src):
 15         for filename in files:
 16             absname = os.path.abspath(os.path.join(dirname, filename))
 17             arcname = absname[len(abs_src) + 1:]
 18             print 'zipping %s as %s' % (os.path.join(dirname, filename), arcname)
 19             zf.write(absname, arcname)
 20     zf.close()
 21 
 22 # zip the file using source to the destination.. can do some error checks here
 23 zip(sys.argv[1], sys.argv[2])
 24 
 25 # create md5
 26 md5 = hashlib.md5(open(sys.argv[2]+".zip", 'rb').read()).hexdigest()
 27 
 28 # Register the streaming http handlers with urllib2
 29 register_openers()
 30 
 31 filename=sys.argv[2]+".zip"
 32 
 33 # headers contains the necessary Content-Type and Content-Length
 34 # datagen is a generator object that yields the encoded parameters
 35 datagen, headers = multipart_encode({
 36     'type'      :       'zip',
 37     'name'      :       "hello.zip",
 38     'file'      :       open(filename)
 39 })
 40 
 41 # make a call
 42 request = urllib2.Request("http://localhost/upload.php", datagen, headers)
 43 
 44 
 45 # Actually do the request, and get the response
 46 print urllib2.urlopen(request).read()

サーバー側は次のようになります

  1 <?php
  2 if ($_FILES["file"]["error"] > 0) {
  3         echo "Error: " . $_FILES["file"]["error"] . "<br />";
  4     } else {
  5         echo "Upload: " . $_FILES["file"]["name"] . "<br />";
  6         echo "Type: " . $_FILES["file"]["type"] . "<br />";
  7         echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
  8         echo "Stored in: " . $_FILES["file"]["tmp_name"];
  9     }
 15 
 16 
 17 ?>

Pythonファイルを実行すると、この出力が得られます

アップロード:
タイプ:
サイズ: 0 Kb
保存先:

これは特に大きなファイルの場合に発生します。

質問の 2 番目の部分、小さなファイルを送信すると、これが表示されます

Upload: upload.php<br />Type: application/x-httpd-php<br />Size: 0.4775390625 Kb<br />Stored in: /private/var/tmp/phpHapPaO
Beautiful-iMac:~ agauravdeep$ open  /private/var/tmp/
Beautiful-iMac:~ agauravdeep$ cd /private/var/tmp/phpHapPaO
-bash: cd: /private/var/tmp/phpHapPaO: No such file or directory
Beautiful-iMac:~ agauravdeep$ vi /private/var/tmp/phpHapPaO
You have new mail in /var/mail/agauravdeep

しかし、そこには何もありません。以下のコメントで述べたように、php.ini.default を更新しようとしましたが、再起動しても phpinfo で変更が更新されませんでした

4

2 に答える 2

0

PHP と Apache は /etc/php.ini.default を参照しており、php.ini はありませんでした。結局、まったく同じ構成で php.ini を作成しました。再起動後、変更が表示されます。

于 2014-11-17T18:27:54.890 に答える