[PHP] String uploaden via ftp niet compleet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • eppie
  • Registratie: Maart 2000
  • Niet online
(overleden)
Hallo,

Ik probeer een string te uploaden naar een ftp server door gebruik te maken van de stream functionaliteit. Echter zie ik elke keer dat wanneer ik een bestand upload dat deze niet compleet is. Ook als ik hetzelfde bestand vaker upload heeft deze elke keer een andere grote.

Echter wanneer ik de string eerst naar een bestand weg schrijf en deze met ftp_put upload is deze wel compleet. :s

Daarnaast heb ik met wireshark gekeken wat er over de lijn gaat. Daar zie ik de complete file WEL voorbij komen met de 2 onderstaande voorbeelden. Echter wordt er als laatste nog een tcp hertransmissie uitgevoerd en de data daarin is ook de laatste wat in het geuploade bestand komt. Snap er niets van :(

Zowel in php 5.1.6 als 5.2.10 getest en op verschillende machines.

Het bestand is 588891 bytes groot.

Voorbeeld 1 welke niet goed gaat:
PHP:
1
2
3
4
5
6
7
8
$host = '127.0.0.1';
$user = 'user';
$passwd = 'passwd';
$path = '/';
$file = $argv[1];
$url='ftp://'.$user.':'.$passwd.'@'.$host.$path.$file;
$content = file_get_contents($file);
file_put_contents($url, $content);


Voorbeeld 2 welke ook niet goed gaat (en zegt dat er 588891 bytes zijn verstuurd)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$host = '127.0.0.1';
$user = 'user';
$passwd = 'passwd';
$path = '/';
$file = $argv[1];
$url='ftp://'.$user.':'.$passwd.'@'.$host.$path.$file;
$content = file_get_contents($file);
$handle = fopen($url, 'wb');

while ($written != strlen($content))
{

        $write = fwrite($handle, substr($content, $written));
        fflush($handle); //zekerheid
        if($write){
                $written .= $write;
                echo "Written: ".$written.'\n';
        }else{
                break;
        }
}


Voorbeeld 3 met ftp_put welke wel goed gaat:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$handle = ftp_connect($host);
$host = '127.0.0.1';
$user = 'user';
$passwd = 'passwd';
$path = '/';
$file = $argv[1]; //de bestandsnaam op de ftp host.
$url='ftp://'.$user.':'.$passwd.'@'.$host.$path.$file;

ftp_login($handle, $user, $passwd);

   $fh = fopen ($file, "r");
   $ret = ftp_nb_fput ($handle, $argv[2], $fh, FTP_BINARY); //argv[2] is het teuploaden bestand
   while ($ret == FTP_MOREDATA) {
        print ftell ($fh)."\n";
        $ret = ftp_nb_continue($handle);
    }
    if ($ret != FTP_FINISHED) {
        print ("error uploading\n");
        exit(1);
    }
    fclose($fh);

?>


Hopelijk hebben jullie een idee van wat er mis gaat. Want ik wil wel fopen blijven gebruiken ivm de verschillende protocollen die gebruikt worden.

edit:
Het ip/user/passwd had ik even vervangen vandaar de type fout ;)

Het rare is dat ik bij een strace zie dat het bij de voorbeelden waar het fout gaat ook meldingen zie
van Resource temporarily unavailable. (bug in ftp?)

starce -e network wanneer het GOED gaat:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP) = 3
socket(PF_NETLINK, SOCK_RAW, 0)         = 3
bind(3, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
getsockname(3, {sa_family=AF_NETLINK, pid=24154, groups=00000000}, [12]) = 0
sendto(3, "\24\0\0\0\26\0\1\3\16\353kK\0\0\0\0\0\0\0\0", 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20
recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"0\0\0\0\24\0\2\0\16\353kKZ^\0\0\2\10\200\376\1\0\0\0\10\0\1\0\177\0\0\1"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 228
recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"@\0\0\0\24\0\2\0\16\353kKZ^\0\0\n\200\200\376\1\0\0\0\24\0\1\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 256
recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\24\0\0\0\3\0\2\0\16\353kKZ^\0\0\0\0\0\0\1\0\0\0\24\0\1\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 20
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
connect(3, {sa_family=AF_INET, sin_port=htons(21), sin_addr=inet_addr("IPADRES_REMOTE")}, 16) = -1 EINPROGRESS (Operation now in progress)
getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
getsockname(3, {sa_family=AF_INET, sin_port=htons(51647), sin_addr=inet_addr("192.168.1.80")}, [16]) = 0
recv(3, "220 BulletProof FTP Server ready"..., 4096, 0) = 38
send(3, "USER *******\r\n", 20, 0) = 20
recv(3, "331 Password required for *******"..., 4096, 0) = 42
send(3, "PASS *******\r\n", 13, 0)       = 13
recv(3, "230 User ******* logged in"..., 4096, 0) = 35
send(3, "TYPE I\r\n", 8, 0)             = 8
recv(3, "200 Type set to I.\r\n", 4096, 0) = 20
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 5
bind(5, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
getsockname(5, {sa_family=AF_INET, sin_port=htons(46660), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0
listen(5, 5)                            = 0
send(3, "PORT 192,168,1,80,182,68\r\n", 26, 0) = 26
recv(3, "200 Port command successful.\r\n", 4096, 0) = 30
send(3, "STOR a\r\n", 8, 0)             = 8
recv(3, "150 Opening data connection for "..., 4096, 0) = 36
accept(5, {sa_family=AF_INET, sin_port=htons(300), sin_addr=inet_addr("IPADRES_REMOTE")}, [16]) = 6
send(6, "..0.1.2.3.4.5.6.7.8.9.10.11.12.1"..., 4095, 0) = 4095
4095
send(6, "0.1041.1042.1043.1044.1045.1046."..., 4095, 0) = 4095
8190
send(6, "9.1860.1861.1862.1863.1864.1865."..., 4095, 0) = 4095
12285
send(6, "8.2679.2680.2681.2682.2683.2684."..., 4095, 0) = 4095
16380
send(6, "7.3498.3499.3500.3501.3502.3503."..., 4095, 0) = 4095
20475
send(6, "6.4317.4318.4319.4320.4321.4322."..., 4095, 0) = 4095
24570
send(6, "5.5136.5137.5138.5139.5140.5141."..., 4095, 0) = 4095
28665
send(6, "4.5955.5956.5957.5958.5959.5960."..., 4095, 0) = 4095
32760
send(6, "3.6774.6775.6776.6777.6778.6779."..., 4095, 0) = 4095
36855
send(6, "2.7593.7594.7595.7596.7597.7598."..., 4095, 0) = 4095
40950
send(6, "1.8412.8413.8414.8415.8416.8417."..., 4095, 0) = 4095
45045
send(6, "0.9231.9232.9233.9234.9235.9236."..., 4095, 0) = 4095
49140
send(6, "041.10042.10043.10044.10045.1004"..., 4095, 0) = 4095
53235
send(6, ".10724.10725.10726.10727.10728.1"..., 4095, 0) = 4095
57330
send(6, "406.11407.11408.11409.11410.1141"..., 4095, 0) = 4095
61425
send(6, ".12089.12090.12091.12092.12093.1"..., 4095, 0) = 4095
65520
send(6, "771.12772.12773.12774.12775.1277"..., 4095, 0) = 4095
69615
send(6, ".13454.13455.13456.13457.13458.1"..., 4095, 0) = 4095
73710
send(6, "136.14137.14138.14139.14140.1414"..., 4095, 0) = 4095
77805
send(6, ".14819.14820.14821.14822.14823.1"..., 4095, 0) = 4095
81900
send(6, "501.15502.15503.15504.15505.1550"..., 4095, 0) = 4095
85995
send(6, ".16184.16185.16186.16187.16188.1"..., 4095, 0) = 4095
90090
send(6, "866.16867.16868.16869.16870.1687"..., 4095, 0) = 4095
94185
send(6, ".17549.17550.17551.17552.17553.1"..., 4095, 0) = 4095
98280
send(6, "231.18232.18233.18234.18235.1823"..., 4095, 0) = 4095
102375
send(6, ".18914.18915.18916.18917.18918.1"..., 4095, 0) = 4095
106470
send(6, "596.19597.19598.19599.19600.1960"..., 4095, 0) = 4095
110565
send(6, ".20279.20280.20281.20282.20283.2"..., 4095, 0) = 4095
114660
send(6, "961.20962.20963.20964.20965.2096"..., 4095, 0) = 4095
118755
send(6, ".21644.21645.21646.21647.21648.2"..., 4095, 0) = 4095
122850
send(6, "326.22327.22328.22329.22330.2233"..., 4095, 0) = 4095
126945
send(6, ".23009.23010.23011.23012.23013.2"..., 4095, 0) = 4095
131040
send(6, "691.23692.23693.23694.23695.2369"..., 4095, 0) = 4095
135135
send(6, ".24374.24375.24376.24377.24378.2"..., 4095, 0) = 4095
139230
send(6, "056.25057.25058.25059.25060.2506"..., 4095, 0) = 4095
143325
send(6, ".25739.25740.25741.25742.25743.2"..., 4095, 0) = 4095
147420
send(6, "421.26422.26423.26424.26425.2642"..., 4095, 0) = 4095
151515
send(6, ".27104.27105.27106.27107.27108.2"..., 4095, 0) = 4095
155610
send(6, "786.27787.27788.27789.27790.2779"..., 4095, 0) = 4095
159705
send(6, ".28469.28470.28471.28472.28473.2"..., 4095, 0) = 4095
163800
send(6, "151.29152.29153.29154.29155.2915"..., 4095, 0) = 4095
167895
send(6, ".29834.29835.29836.29837.29838.2"..., 4095, 0) = 4095
171990
send(6, "516.30517.30518.30519.30520.3052"..., 4095, 0) = 4095
176085
send(6, ".31199.31200.31201.31202.31203.3"..., 4095, 0) = 4095
180180
send(6, "881.31882.31883.31884.31885.3188"..., 4095, 0) = 4095
184275
send(6, ".32564.32565.32566.32567.32568.3"..., 4095, 0) = 4095
188370
send(6, "246.33247.33248.33249.33250.3325"..., 4095, 0) = 4095
192465
send(6, ".33929.33930.33931.33932.33933.3"..., 4095, 0) = 4095
196560
send(6, "611.34612.34613.34614.34615.3461"..., 4095, 0) = 4095
200655
send(6, ".35294.35295.35296.35297.35298.3"..., 4095, 0) = 4095
204750
send(6, "976.35977.35978.35979.35980.3598"..., 4095, 0) = 4095
208845
send(6, ".36659.36660.36661.36662.36663.3"..., 4095, 0) = 4095
212940
send(6, "341.37342.37343.37344.37345.3734"..., 4095, 0) = 4095
217035
send(6, ".38024.38025.38026.38027.38028.3"..., 4095, 0) = 4095
221130
send(6, "706.38707.38708.38709.38710.3871"..., 4095, 0) = 4095
225225
send(6, ".39389.39390.39391.39392.39393.3"..., 4095, 0) = 4095
229320
send(6, "071.40072.40073.40074.40075.4007"..., 4095, 0) = 4095
233415
send(6, ".40754.40755.40756.40757.40758.4"..., 4095, 0) = 4095
237510
send(6, "436.41437.41438.41439.41440.4144"..., 4095, 0) = 4095
241605
send(6, ".42119.42120.42121.42122.42123.4"..., 4095, 0) = 4095
245700
send(6, "801.42802.42803.42804.42805.4280"..., 4095, 0) = 4095
249795
send(6, ".43484.43485.43486.43487.43488.4"..., 4095, 0) = 4095
253890
send(6, "166.44167.44168.44169.44170.4417"..., 4095, 0) = 4095
257985
send(6, ".44849.44850.44851.44852.44853.4"..., 4095, 0) = 4095
262080
send(6, "531.45532.45533.45534.45535.4553"..., 4095, 0) = 4095
266175
send(6, ".46214.46215.46216.46217.46218.4"..., 4095, 0) = 4095
270270
send(6, "896.46897.46898.46899.46900.4690"..., 4095, 0) = 4095
274365
send(6, ".47579.47580.47581.47582.47583.4"..., 4095, 0) = 4095
278460
send(6, "261.48262.48263.48264.48265.4826"..., 4095, 0) = 4095
282555
send(6, ".48944.48945.48946.48947.48948.4"..., 4095, 0) = 4095
286650
send(6, "626.49627.49628.49629.49630.4963"..., 4095, 0) = 4095
290745
send(6, ".50309.50310.50311.50312.50313.5"..., 4095, 0) = 4095
294840
send(6, "991.50992.50993.50994.50995.5099"..., 4095, 0) = 4095
298935
send(6, ".51674.51675.51676.51677.51678.5"..., 4095, 0) = 4095
303030
send(6, "356.52357.52358.52359.52360.5236"..., 4095, 0) = 4095
307125
send(6, ".53039.53040.53041.53042.53043.5"..., 4095, 0) = 4095
311220
send(6, "721.53722.53723.53724.53725.5372"..., 4095, 0) = 4095
315315
send(6, ".54404.54405.54406.54407.54408.5"..., 4095, 0) = 4095
319410
send(6, "086.55087.55088.55089.55090.5509"..., 4095, 0) = 4095
323505
send(6, ".55769.55770.55771.55772.55773.5"..., 4095, 0) = 4095
327600
send(6, "451.56452.56453.56454.56455.5645"..., 4095, 0) = 4095
331695
send(6, ".57134.57135.57136.57137.57138.5"..., 4095, 0) = 4095
335790
send(6, "816.57817.57818.57819.57820.5782"..., 4095, 0) = 4095
339885
send(6, ".58499.58500.58501.58502.58503.5"..., 4095, 0) = 4095
343980
send(6, "181.59182.59183.59184.59185.5918"..., 4095, 0) = 4095
348075
send(6, ".59864.59865.59866.59867.59868.5"..., 4095, 0) = 4095
352170
send(6, "546.60547.60548.60549.60550.6055"..., 4095, 0) = 4095
356265
send(6, ".61229.61230.61231.61232.61233.6"..., 4095, 0) = 4095
360360
send(6, "911.61912.61913.61914.61915.6191"..., 4095, 0) = 4095
364455
send(6, ".62594.62595.62596.62597.62598.6"..., 4095, 0) = 4095
368550
send(6, "276.63277.63278.63279.63280.6328"..., 4095, 0) = 4095
372645
send(6, ".63959.63960.63961.63962.63963.6"..., 4095, 0) = 4095
376740
send(6, "641.64642.64643.64644.64645.6464"..., 4095, 0) = 4095
380835
send(6, ".65324.65325.65326.65327.65328.6"..., 4095, 0) = 4095
384930
send(6, "006.66007.66008.66009.66010.6601"..., 4095, 0) = 4095
389025
send(6, ".66689.66690.66691.66692.66693.6"..., 4095, 0) = 4095
393120
send(6, "371.67372.67373.67374.67375.6737"..., 4095, 0) = 4095
397215
send(6, ".68054.68055.68056.68057.68058.6"..., 4095, 0) = 4095
401310
send(6, "736.68737.68738.68739.68740.6874"..., 4095, 0) = 4095
405405
send(6, ".69419.69420.69421.69422.69423.6"..., 4095, 0) = 4095
409500
send(6, "101.70102.70103.70104.70105.7010"..., 4095, 0) = 4095
413595
send(6, ".70784.70785.70786.70787.70788.7"..., 4095, 0) = 4095
417690
send(6, "466.71467.71468.71469.71470.7147"..., 4095, 0) = 4095
421785
send(6, ".72149.72150.72151.72152.72153.7"..., 4095, 0) = 4095
425880
send(6, "831.72832.72833.72834.72835.7283"..., 4095, 0) = 4095
429975
send(6, ".73514.73515.73516.73517.73518.7"..., 4095, 0) = 4095
434070
send(6, "196.74197.74198.74199.74200.7420"..., 4095, 0) = 4095
438165
send(6, ".74879.74880.74881.74882.74883.7"..., 4095, 0) = 4095
442260
send(6, "561.75562.75563.75564.75565.7556"..., 4095, 0) = 4095
446355
send(6, ".76244.76245.76246.76247.76248.7"..., 4095, 0) = 4095
450450
send(6, "926.76927.76928.76929.76930.7693"..., 4095, 0) = 4095
454545
send(6, ".77609.77610.77611.77612.77613.7"..., 4095, 0) = 4095
458640
send(6, "291.78292.78293.78294.78295.7829"..., 4095, 0) = 4095
462735
send(6, ".78974.78975.78976.78977.78978.7"..., 4095, 0) = 4095
466830
send(6, "656.79657.79658.79659.79660.7966"..., 4095, 0) = 4095
470925
send(6, ".80339.80340.80341.80342.80343.8"..., 4095, 0) = 4095
475020
send(6, "021.81022.81023.81024.81025.8102"..., 4095, 0) = 4095
479115
send(6, ".81704.81705.81706.81707.81708.8"..., 4095, 0) = 4095
483210
send(6, "386.82387.82388.82389.82390.8239"..., 4095, 0) = 4095
487305
send(6, ".83069.83070.83071.83072.83073.8"..., 4095, 0) = 4095
491400
send(6, "751.83752.83753.83754.83755.8375"..., 4095, 0) = 4095
495495
send(6, ".84434.84435.84436.84437.84438.8"..., 4095, 0) = 4095
499590
send(6, "116.85117.85118.85119.85120.8512"..., 4095, 0) = 4095
503685
send(6, ".85799.85800.85801.85802.85803.8"..., 4095, 0) = 4095
507780
send(6, "481.86482.86483.86484.86485.8648"..., 4095, 0) = 4095
511875
send(6, ".87164.87165.87166.87167.87168.8"..., 4095, 0) = 4095
515970
send(6, "846.87847.87848.87849.87850.8785"..., 4095, 0) = 4095
520065
send(6, ".88529.88530.88531.88532.88533.8"..., 4095, 0) = 4095
524160
send(6, "211.89212.89213.89214.89215.8921"..., 4095, 0) = 4095
528255
send(6, ".89894.89895.89896.89897.89898.8"..., 4095, 0) = 4095
532350
send(6, "576.90577.90578.90579.90580.9058"..., 4095, 0) = 4095
536445
send(6, ".91259.91260.91261.91262.91263.9"..., 4095, 0) = 4095
540540
send(6, "941.91942.91943.91944.91945.9194"..., 4095, 0) = 4095
544635
send(6, ".92624.92625.92626.92627.92628.9"..., 4095, 0) = 4095
548730
send(6, "306.93307.93308.93309.93310.9331"..., 4095, 0) = 4095
552825
send(6, ".93989.93990.93991.93992.93993.9"..., 4095, 0) = 4095
556920
send(6, "671.94672.94673.94674.94675.9467"..., 4095, 0) = 4095
561015
send(6, ".95354.95355.95356.95357.95358.9"..., 4095, 0) = 4095
565110
send(6, "036.96037.96038.96039.96040.9604"..., 4095, 0) = 4095
569205
send(6, ".96719.96720.96721.96722.96723.9"..., 4095, 0) = 4095
573300
send(6, "401.97402.97403.97404.97405.9740"..., 4095, 0) = 4095
577395
send(6, ".98084.98085.98086.98087.98088.9"..., 4095, 0) = 4095
581490
send(6, "766.98767.98768.98769.98770.9877"..., 4095, 0) = 4095
585585
send(6, ".99449.99450.99451.99452.99453.9"..., 3306, 0) = 3306
recv(3, "226-Disk Quota - Current : 16 Mb"..., 4096, 0) = 80
recv(3, "226 File received ok.\r\n", 4096, 0) = 23


strace -e network voorbeeld die NIET goed gaat
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP) = 3
socket(PF_NETLINK, SOCK_RAW, 0)         = 3
bind(3, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
getsockname(3, {sa_family=AF_NETLINK, pid=24170, groups=00000000}, [12]) = 0
sendto(3, "\24\0\0\0\26\0\1\3>\353kK\0\0\0\0\0\0\0\0", 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20
recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"0\0\0\0\24\0\2\0>\353kKj^\0\0\2\10\200\376\1\0\0\0\10\0\1\0\177\0\0\1"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 228
recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"@\0\0\0\24\0\2\0>\353kKj^\0\0\n\200\200\376\1\0\0\0\24\0\1\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 256
recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\24\0\0\0\3\0\2\0>\353kKj^\0\0\0\0\0\0\1\0\0\0\24\0\1\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 20
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
connect(3, {sa_family=AF_INET, sin_port=htons(21), sin_addr=inet_addr("IPADRES_REMOTE")}, 16) = -1 EINPROGRESS (Operation now in progress)
getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
recv(3, "220 BulletProof FTP Server ready"..., 8192, MSG_DONTWAIT) = 38
send(3, "USER *******\r\n", 20, MSG_DONTWAIT) = 20
recv(3, "331 Password required for *******"..., 8192, MSG_DONTWAIT) = 42
send(3, "PASS *******\r\n", 13, MSG_DONTWAIT) = 13
recv(3, "230 User ******* logged in"..., 8192, MSG_DONTWAIT) = 35
send(3, "TYPE I\r\n", 8, MSG_DONTWAIT)  = 8
recv(3, "200 Type set to I.\r\n", 8192, MSG_DONTWAIT) = 20
send(3, "SIZE /test.bin\r\n", 16, MSG_DONTWAIT) = 16
recv(3, "550 No such file or directory.\r\n", 8192, MSG_DONTWAIT) = 32
send(3, "EPSV\r\n", 6, MSG_DONTWAIT)    = 6
recv(3, "500 Unknown command.\r\n", 8192, MSG_DONTWAIT) = 22
send(3, "PASV\r\n", 6, MSG_DONTWAIT)    = 6
recv(3, "227 Entering Passive Mode (213,1"..., 8192, MSG_DONTWAIT) = 52
send(3, "STOR /test.bin\r\n", 16, MSG_DONTWAIT) = 16
socket(PF_NETLINK, SOCK_RAW, 0)         = 4
bind(4, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
getsockname(4, {sa_family=AF_NETLINK, pid=24170, groups=00000000}, [12]) = 0
sendto(4, "\24\0\0\0\26\0\1\3>\353kK\0\0\0\0\0\0\0\0", 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20
recvmsg(4, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"0\0\0\0\24\0\2\0>\353kKj^\0\0\2\10\200\376\1\0\0\0\10\0\1\0\177\0\0\1"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 228
recvmsg(4, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"@\0\0\0\24\0\2\0>\353kKj^\0\0\n\200\200\376\1\0\0\0\24\0\1\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 256
recvmsg(4, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\24\0\0\0\3\0\2\0>\353kKj^\0\0\0\0\0\0\1\0\0\0\24\0\1\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 20
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 4
connect(4, {sa_family=AF_INET, sin_port=htons(47757), sin_addr=inet_addr("IPADRES_REMOTE")}, 16) = -1 EINPROGRESS (Operation now in progress)
getsockopt(4, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
recv(3, "150 Data connection accepted fro"..., 8192, MSG_DONTWAIT) = 89
send(4, "..0.1.2.3.4.5.6.7.8.9.10.11.12.1"..., 8192, MSG_DONTWAIT) = 8192
send(4, "1860.1861.1862.1863.1864.1865.18"..., 8192, MSG_DONTWAIT) = 8192
send(4, "98.3499.3500.3501.3502.3503.3504"..., 8192, MSG_DONTWAIT) = 1400
send(4, "78.3779.3780.3781.3782.3783.3784"..., 8192, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
send(4, "78.3779.3780.3781.3782.3783.3784"..., 8192, MSG_DONTWAIT) = 8192
send(4, ".5417.5418.5419.5420.5421.5422.5"..., 8192, MSG_DONTWAIT) = 8192
send(4, "055.7056.7057.7058.7059.7060.706"..., 8192, MSG_DONTWAIT) = 8192
send(4, "3.8694.8695.8696.8697.8698.8699."..., 8192, MSG_DONTWAIT) = 5520
send(4, "7.9798.9799.9800.9801.9802.9803."..., 8192, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
send(4, "7.9798.9799.9800.9801.9802.9803."..., 8192, MSG_DONTWAIT) = 8192
send(4, "6.11197.11198.11199.11200.11201."..., 8192, MSG_DONTWAIT) = 8192
send(4, "12562.12563.12564.12565.12566.12"..., 8192, MSG_DONTWAIT) = 8192
send(4, "927.13928.13929.13930.13931.1393"..., 8192, MSG_DONTWAIT) = 48
send(4, "935.13936.13937.13938.13939.1394"..., 8192, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
send(4, "935.13936.13937.13938.13939.1394"..., 8192, MSG_DONTWAIT) = 8192
send(4, "0.15301.15302.15303.15304.15305."..., 8192, MSG_DONTWAIT) = 8192
send(4, "16666.16667.16668.16669.16670.16"..., 8192, MSG_DONTWAIT) = 8192
send(4, "031.18032.18033.18034.18035.1803"..., 8192, MSG_DONTWAIT) = 8192
send(4, "6.19397.19398.19399.19400.19401."..., 8192, MSG_DONTWAIT) = 8192
send(4, "20762.20763.20764.20765.20766.20"..., 8192, MSG_DONTWAIT) = 8192
send(4, "127.22128.22129.22130.22131.2213"..., 8192, MSG_DONTWAIT) = 2832
send(4, "599.22600.22601.22602.22603.2260"..., 8192, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
send(4, "599.22600.22601.22602.22603.2260"..., 8192, MSG_DONTWAIT) = 8192
send(4, "4.23965.23966.23967.23968.23969."..., 8192, MSG_DONTWAIT) = 8192
send(4, "25330.25331.25332.25333.25334.25"..., 8192, MSG_DONTWAIT) = 8192
send(4, "695.26696.26697.26698.26699.2670"..., 8192, MSG_DONTWAIT) = 8192
send(4, "0.28061.28062.28063.28064.28065."..., 8192, MSG_DONTWAIT) = 8192
send(4, "29426.29427.29428.29429.29430.29"..., 8192, MSG_DONTWAIT) = 2816
send(4, "895.29896.29897.29898.29899.2990"..., 8192, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
send(4, "895.29896.29897.29898.29899.2990"..., 8192, MSG_DONTWAIT) = 8192
send(4, "0.31261.31262.31263.31264.31265."..., 8192, MSG_DONTWAIT) = 8192
send(4, "32626.32627.32628.32629.32630.32"..., 8192, MSG_DONTWAIT) = 8192
send(4, "991.33992.33993.33994.33995.3399"..., 8192, MSG_DONTWAIT) = 8192
send(4, "6.35357.35358.35359.35360.35361."..., 8192, MSG_DONTWAIT) = 8192
send(4, "36722.36723.36724.36725.36726.36"..., 8192, MSG_DONTWAIT) = 4184
send(4, "419.37420.37421.37422.37423.3742"..., 8192, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
send(4, "419.37420.37421.37422.37423.3742"..., 8192, MSG_DONTWAIT) = 8192
send(4, "4.38785.38786.38787.38788.38789."..., 8192, MSG_DONTWAIT) = 8192
send(4, "40150.40151.40152.40153.40154.40"..., 8192, MSG_DONTWAIT) = 8192
send(4, "515.41516.41517.41518.41519.4152"..., 8192, MSG_DONTWAIT) = 8192
send(4, "0.42881.42882.42883.42884.42885."..., 8192, MSG_DONTWAIT) = 8192
send(4, "44246.44247.44248.44249.44250.44"..., 8192, MSG_DONTWAIT) = 2816
send(4, "715.44716.44717.44718.44719.4472"..., 8192, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
send(4, "715.44716.44717.44718.44719.4472"..., 8192, MSG_DONTWAIT) = 8192
send(4, "0.46081.46082.46083.46084.46085."..., 8192, MSG_DONTWAIT) = 8192
send(4, "47446.47447.47448.47449.47450.47"..., 8192, MSG_DONTWAIT) = 8192
send(4, "811.48812.48813.48814.48815.4881"..., 8192, MSG_DONTWAIT) = 8192
send(4, "6.50177.50178.50179.50180.50181."..., 8192, MSG_DONTWAIT) = 8192
send(4, "51542.51543.51544.51545.51546.51"..., 8192, MSG_DONTWAIT) = 1448
send(4, "783.51784.51785.51786.51787.5178"..., 8192, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
send(4, "783.51784.51785.51786.51787.5178"..., 8192, MSG_DONTWAIT) = 8192
send(4, "8.53149.53150.53151.53152.53153."..., 8192, MSG_DONTWAIT) = 8192
send(4, "54514.54515.54516.54517.54518.54"..., 8192, MSG_DONTWAIT) = 8192
send(4, "879.55880.55881.55882.55883.5588"..., 8192, MSG_DONTWAIT) = 6888
send(4, "027.57028.57029.57030.57031.5703"..., 8192, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
send(4, "027.57028.57029.57030.57031.5703"..., 8192, MSG_DONTWAIT) = 8192
send(4, "2.58393.58394.58395.58396.58397."..., 8192, MSG_DONTWAIT) = 8192
send(4, "59758.59759.59760.59761.59762.59"..., 8192, MSG_DONTWAIT) = 8192
send(4, "123.61124.61125.61126.61127.6112"..., 8192, MSG_DONTWAIT) = 8192
send(4, "8.62489.62490.62491.62492.62493."..., 8192, MSG_DONTWAIT) = 8192
send(4, "63854.63855.63856.63857.63858.63"..., 8192, MSG_DONTWAIT) = 1448
send(4, "095.64096.64097.64098.64099.6410"..., 8192, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
send(4, "095.64096.64097.64098.64099.6410"..., 8192, MSG_DONTWAIT) = 8192
send(4, "0.65461.65462.65463.65464.65465."..., 8192, MSG_DONTWAIT) = 8192
send(4, "66826.66827.66828.66829.66830.66"..., 8192, MSG_DONTWAIT) = 8192
send(4, "191.68192.68193.68194.68195.6819"..., 8192, MSG_DONTWAIT) = 6888
send(4, "339.69340.69341.69342.69343.6934"..., 8192, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
send(4, "339.69340.69341.69342.69343.6934"..., 8192, MSG_DONTWAIT) = 8192
send(4, "4.70705.70706.70707.70708.70709."..., 8192, MSG_DONTWAIT) = 8192
send(4, "72070.72071.72072.72073.72074.72"..., 8192, MSG_DONTWAIT) = 8192
send(4, "435.73436.73437.73438.73439.7344"..., 8192, MSG_DONTWAIT) = 6888
send(4, "583.74584.74585.74586.74587.7458"..., 8192, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
send(4, "583.74584.74585.74586.74587.7458"..., 8192, MSG_DONTWAIT) = 8192
send(4, "8.75949.75950.75951.75952.75953."..., 8192, MSG_DONTWAIT) = 8192
send(4, "77314.77315.77316.77317.77318.77"..., 8192, MSG_DONTWAIT) = 8192
send(4, "679.78680.78681.78682.78683.7868"..., 8192, MSG_DONTWAIT) = 6888
send(4, "827.79828.79829.79830.79831.7983"..., 8192, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
send(4, "827.79828.79829.79830.79831.7983"..., 8192, MSG_DONTWAIT) = 8192
send(4, "2.81193.81194.81195.81196.81197."..., 8192, MSG_DONTWAIT) = 8192
send(4, "82558.82559.82560.82561.82562.82"..., 8192, MSG_DONTWAIT) = 8192
send(4, "923.83924.83925.83926.83927.8392"..., 8192, MSG_DONTWAIT) = 8192
send(4, "8.85289.85290.85291.85292.85293."..., 8192, MSG_DONTWAIT) = 8192
send(4, "86654.86655.86656.86657.86658.86"..., 8192, MSG_DONTWAIT) = 80
send(4, "667.86668.86669.86670.86671.8667"..., 8192, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
send(4, "667.86668.86669.86670.86671.8667"..., 8192, MSG_DONTWAIT) = 8192
send(4, "2.88033.88034.88035.88036.88037."..., 8192, MSG_DONTWAIT) = 8192
send(4, "89398.89399.89400.89401.89402.89"..., 8192, MSG_DONTWAIT) = 8192
send(4, "763.90764.90765.90766.90767.9076"..., 8192, MSG_DONTWAIT) = 6888
send(4, "911.91912.91913.91914.91915.9191"..., 8192, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
send(4, "911.91912.91913.91914.91915.9191"..., 8192, MSG_DONTWAIT) = 8192
send(4, "6.93277.93278.93279.93280.93281."..., 8192, MSG_DONTWAIT) = 8192
send(4, "94642.94643.94644.94645.94646.94"..., 8192, MSG_DONTWAIT) = 8192
send(4, "007.96008.96009.96010.96011.9601"..., 8192, MSG_DONTWAIT) = 6888
send(4, "155.97156.97157.97158.97159.9716"..., 8192, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
send(4, "155.97156.97157.97158.97159.9716"..., 8192, MSG_DONTWAIT) = 8192
send(4, "0.98521.98522.98523.98524.98525."..., 8192, MSG_DONTWAIT) = 8192
send(4, "99886.99887.99888.99889.99890.99"..., 683, MSG_DONTWAIT) = 683
Written: 588891\n
send(3, "QUIT\r\n", 6, MSG_DONTWAIT)    = 6

[ Voor 90% gewijzigd door eppie op 05-02-2010 11:15 ]


Acties:
  • 0 Henk 'm!

  • Delusion
  • Registratie: Mei 2009
  • Laatst online: 11:30
PHP:
1
$host = '1270.0.1;

Dat kan niet hè ;)
Manuel schreef op vrijdag 05 februari 2010 @ 10:59:
@Delusion: vergeet dan zelf ook niet de punt bij de 127. ;)
Ik heb niets verbeterd, ik maak alleen iets duidelijk. ;)
Manuel schreef op vrijdag 05 februari 2010 @ 10:59:
@Delusion: voeg dan wel even een . toe en zeg hem hoe die dit moet oplossen. :X
Hoe hij dit moet oplossen?
http://php.net/manual/en/language.types.string.php

[ Voor 114% gewijzigd door Delusion op 05-02-2010 11:04 ]


Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 07:59
@Delusion: voeg dan wel even een . toe en zeg hem hoe die dit moet oplossen. :X
@Delusion 2: Ja inderdaad, zag het ook net staan. Soz :)

Verder heb ik het gevoel dat voorbeeld 1 al niet je eigen code is maar gewoon opzoek bent naar een quick-fix.
Kijk anders ook eens hier: MikeBernat - PHP Opening and Saving Files over FTP

[ Voor 19% gewijzigd door Manuel op 05-02-2010 11:03 ]


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Er zitten heel veel fouten in de geposte voorbeelden, ik denk niet dat dit 1 op 1 is, anders is het me een raadsel hoe dit geen fatal errors oplevert.

Overigens zie ik het probleem niet als optie 3 gewoon werkt, dat lijkt me namelijk ook de netste oplossing voor wat je wilt.

Acties:
  • 0 Henk 'm!

  • eppie
  • Registratie: Maart 2000
  • Niet online
(overleden)
Manuel schreef op vrijdag 05 februari 2010 @ 10:59:
Verder heb ik het gevoel dat voorbeeld 1 al niet je eigen code is maar gewoon opzoek bent naar een quick-fix.
Kijk anders ook eens hier: MikeBernat - PHP Opening and Saving Files over FTP
Zal de linkt is bekijken. Echter heb ik het schrijven in text als wel binary modus geprobeerd.

Dit zijn enkele test script dit ik heb geprobeerd omdat het in ons eigenlijke product nu niet goed werkt. En de voorbeelden heb ik iid afgeleid van wat ik bij de betreffende functies lees op php.net :)
Cartman! schreef op vrijdag 05 februari 2010 @ 11:01:
Er zitten heel veel fouten in de geposte voorbeelden, ik denk niet dat dit 1 op 1 is, anders is het me een raadsel hoe dit geen fatal errors oplevert.

Overigens zie ik het probleem niet als optie 3 gewoon werkt, dat lijkt me namelijk ook de netste oplossing voor wat je wilt.
Cartman! schreef op vrijdag 05 februari 2010 @ 11:01:
Er zitten heel veel fouten in de geposte voorbeelden, ik denk niet dat dit 1 op 1 is, anders is het me een raadsel hoe dit geen fatal errors oplevert.

Overigens zie ik het probleem niet als optie 3 gewoon werkt, dat lijkt me namelijk ook de netste oplossing voor wat je wilt.
Wat van fouten dan ik heb ze gewoon gecopy/past uit me php scriptjes. Enige wat zou kunnen is dat ik misschien een { ofzo ben vergeten te copy/pasten? Daarnaast is dit natuurlijk geen productie code die alles netjes afvangt enz omdat ik hiermee probeer uit te zoeken waarom een file maar half overkomt.

Daarnaast is voorbeeld 3 geen oplossing omdat dit ftp only is. Met fopen kan je zowel lokale, ftp, http enz files openen op een uniforme manier. En dat wil ik wel graag zo houden :)

[ Voor 20% gewijzigd door eppie op 05-02-2010 11:14 ]


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
eppie schreef op vrijdag 05 februari 2010 @ 11:10:
[...]
Wat van fouten dan ik heb ze gewoon gecopy/past uit me php scriptjes. Enige wat zou kunnen is dat ik misschien een { ofzo ben vergeten te copy/pasten? Daarnaast is dit natuurlijk geen productie code die alles netjes afvangt enz omdat ik hiermee probeer uit te zoeken waarom een file maar half overkomt.
Kijk eens goed dan :| Kijk nog eens goed naar de blokken code in de TS. En misschien een editor nemen met code highlighting.

PHP:
1
$host = '127.0.0.1;


edit: snel alles fixen he... :z

Acties:
  • 0 Henk 'm!

  • Delusion
  • Registratie: Mei 2009
  • Laatst online: 11:30
eppie schreef op vrijdag 05 februari 2010 @ 11:10:
Daarnaast is voorbeeld 3 geen oplossing omdat dit ftp only is. Met fopen kan je zowel lokale, ftp, http enz files openen op een uniforme manier. En dat wil ik wel graag zo houden :)
Misschien is cURL iets voor je. :)

Acties:
  • 0 Henk 'm!

  • eppie
  • Registratie: Maart 2000
  • Niet online
(overleden)
Cartman! schreef op vrijdag 05 februari 2010 @ 11:14:
[...]


Kijk eens goed dan :| Kijk nog eens goed naar de blokken code in de TS. En misschien een editor nemen met code highlighting.

PHP:
1
$host = '127.0.0.1;
Nou zoals ik al had aangegeven had ik de ip adressen even vervangen omdat deze niet op internet horen te staan, en je hebt gelijk dat ik dus even een ' vergeten ben. Echter lijkt mij toch wel duidelijk dat dat niet het probleem is ;)
Ik ga het is bekijken!

Wat ik zo over cURL lees is dat je voor elk soort protocol wel weer van alle soorten opties moet zetten. Dan moet ik als nog verschillende implementaties maken voor de gebruikte protocollen wat bij fopen niet nodig is. :( Maar ik zal me er nog verder in verdiepen.

[ Voor 14% gewijzigd door eppie op 05-02-2010 11:39 ]


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

-

[ Voor 100% gewijzigd door Guillome op 05-02-2010 11:23 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • eppie
  • Registratie: Maart 2000
  • Niet online
(overleden)
Manuel schreef op vrijdag 05 februari 2010 @ 10:59:
@Delusion: voeg dan wel even een . toe en zeg hem hoe die dit moet oplossen. :X
@Delusion 2: Ja inderdaad, zag het ook net staan. Soz :)

Verder heb ik het gevoel dat voorbeeld 1 al niet je eigen code is maar gewoon opzoek bent naar een quick-fix.
Kijk anders ook eens hier: MikeBernat - PHP Opening and Saving Files over FTP
Ik heb het voorbeeld in je link ook even toegepast.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php  
$host = '127.0.0.1';
$user = 'user';
$passwd = 'passwd';
$path = '/';
$file = $argv[1];
$url='ftp://'.$user.':'.$passwd.'@'.$host.$path.$file;

$content = file_get_contents($file);
       
$opts = array(  
    'ftp'=>array(  
    'overwrite'=> true)
);

$context = stream_context_create($opts);
file_put_contents($url, $content, false, $context) or die("Could not save changes");          
?> 


Echter wordt ook hier niet de volledige file geupload. En ook elke keer een verschillend aantal bytes.
Wanneer ik trouwens upload met het ftp commando of een andere ftp client gaat het ook perfect.
Het lijkt echt puur in php's ftp stream gedeelte te zitten :(

Update:
Ik heb de voorbeelden nog eens getest op mijn eigen machine met vsftpd. Dan gaat het wel goed, echter met Bulletproof ftp van de klant niet.

Update2:
Na Bulletproof ftp server hier te hebben geinstalleerd en dan de voorbeelden weer te testen zie ik het zelfde resultaat. Het is dus duidelijk een combi van php's fopen en Bulletproof ftp server.

Update3:
Na installatie van Serv-u blijkt het nog steeds niet goed te gaan. De combi php en windows ftp server gaat dus niet goed. Ook in combinatie van php5.3.1 gaat dit nog niet goed.

[ Voor 15% gewijzigd door eppie op 05-02-2010 13:36 ]


Acties:
  • 0 Henk 'm!

Verwijderd

eppie schreef op vrijdag 05 februari 2010 @ 11:16:
Wat ik zo over cURL lees is dat je voor elk soort protocol wel weer van alle soorten opties moet zetten. Dan moet ik als nog verschillende implementaties maken voor de gebruikte protocollen wat bij fopen niet nodig is. :( Maar ik zal me er nog verder in verdiepen.
Als je dat eens handig in protocolhandlers wrapped dan maak je het jezelf in ieder geval veel makkelijker. cURL is ook vele malen flexibeler dan fopen. Sterker nog als je ooit op een machine terecht komt waar allow_url_fopen uit staat heb je een probleem.
Pagina: 1