-
Notifications
You must be signed in to change notification settings - Fork 25
Expand file tree
/
Copy pathfopen.xml
More file actions
398 lines (388 loc) · 15 KB
/
fopen.xml
File metadata and controls
398 lines (388 loc) · 15 KB
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
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 74b2af242f2131cd43a8830fee3864f1f68ccbed Maintainer: nilgun Status: ready -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.fopen">
<refnamediv>
<refname>fopen</refname>
<refpurpose>Bir dosya veya URL'yi açar</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>resource</type><type>false</type></type><methodname>fopen</methodname>
<methodparam><type>string</type><parameter>dosyaismi</parameter></methodparam>
<methodparam><type>string</type><parameter>kip</parameter></methodparam>
<methodparam choice="opt"><type>bool</type><parameter>include_path_kullan</parameter><initializer>&false;</initializer></methodparam>
<methodparam choice="opt"><type class="union"><type>resource</type><type>null</type></type><parameter>bağlam</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
<function>fopen</function> işlevi <parameter>dosyaismi</parameter> ile
belirtilen özkaynak için bir akım açar.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>dosyaismi</parameter></term>
<listitem>
<para>
Eğer <parameter>dosyaismi</parameter> "şema://...", biçeminde
belirtilmişse bir URL belirtildiği varsayılır ve PHP bu şema için bir
protokol eylemcisi (başka bir deyişle bir sarmalayıcı) bulmaya çalışır.
Eğer bu protokol için kayıtlı bir sarmalayıcı yoksa PHP, sorunun
giderilmesine yardımcı olmanız için bir uyarı verip belirtilen dosya
ismini sıradan bir dosya gibi ele alarak işleme devam eder.
</para>
<para>
Eğer PHP <parameter>dosyaismi</parameter> ile belirtilen dosyanın bir
yerel dosya olduğuna karar verirse bu dosya üzerinde bir akım açmaya
çalışır. Dosya PHP için erişilebilir olmalıdır, yani dosyanın bu erişim
için yeterli izinlere sahip olduğundan emin olmanız gerekir.
<link linkend="ini.open-basedir">open_basedir</link> yönergesi
etkinse bunlarla ilgili kısıtlamalar uygulanabilir.
</para>
<para>
Eğer PHP <parameter>dosyaismi</parameter> ile belirtilen dosyanın bir
URL olduğuna ve bununla ilgili kayıtlı bir protokol olduğuna karar
verirse ve bu protokol bir ağ protokolü olarak kaydedilmişse PHP <link
linkend="ini.allow-url-fopen">allow_url_fopen</link> yönergesinin etkin
olup olmadığına bakar. Eğer yönergeye 'Off' değeri atanmışsa PHP bir
uyarı verip işlevin başarısız olmasını sağlar.
</para>
<note>
<para>
Desteklenen protokolleri <xref linkend="wrappers"/> bölümünde
bulabilirsiniz. Bazı protokoller (<literal>sarmalayıcılar</literal>)
<literal>bağlam</literal> ve/veya &php.ini; seçeneklerini destekler.
Kullanılabilecek seçeneklerin neler olduğunu öğrenmek için protokolle
ilgili sayfaya bakınız (örneğin, <literal>http</literal> sarmalayıcısı
<literal>user_agent</literal> &php.ini; yönergesini kullanır).
</para>
</note>
<para>
Windows platformunda dosya yolunu belirtmekte kullanılan tersbölü
çizgilerini öncelemeyi unutmayın. Daha da iyisi dosya yolunu belirtmek
için bölü çizgilerini kullanın. Örnek:
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
$dt = fopen("c:\\dizin\\kaynak.txt", "r");
?>
]]>
</programlisting>
</informalexample>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>kip</parameter></term>
<listitem>
<para>
<parameter>kip</parameter> bağımsız değişkeninde akım için gerekli erişim
türü belirtilir. Şunlardan biri olabilir:
<table>
<title><function>fopen</function> işlevinin <parameter>kip</parameter>
bağımsız değişkeninde belirtilebilecek kip çeşitleri</title>
<tgroup cols="2">
<thead>
<row>
<entry><parameter>Kip</parameter></entry>
<entry>Açıklama</entry>
</row>
</thead>
<tbody>
<row>
<entry><literal>'r'</literal></entry>
<entry>
Akım sadece okumak için açılır; dosya konumlayıcı dosyanın
başlangıcına yerleştirilir.
</entry>
</row>
<row>
<entry><literal>'r+'</literal></entry>
<entry>
Akım hem okumak hem de yazmak için açılır; dosya konumlayıcı
dosyanın başlangıcına yerleştirilir.
</entry>
</row>
<row>
<entry><literal>'w'</literal></entry>
<entry>
Akım sadece yazmak için açılır; dosya konumlayıcı dosyanın
başlangıcına yerleştirilir ve dosya uzunluğu sıfır yapılır. Dosya
mevcut değilse oluşturulmaya çalışılır.
</entry>
</row>
<row>
<entry><literal>'w+'</literal></entry>
<entry>
Akım hem okumak hem de yazmak için açılması dışında
<literal>'w'</literal> gibidir.
</entry>
</row>
<row>
<entry><literal>'a'</literal></entry>
<entry>
Akım sadece yazmak için açılır; dosya konumlayıcı dosyanın
sonuna yerleştirilir. Dosya mevcut değilse oluşturulmaya çalışılır.
<function>fseek</function> işlevi bu kipte etkisiz olup daima
dosyanın sonuna yazar.
</entry>
</row>
<row>
<entry><literal>'a+'</literal></entry>
<entry>
Akım hem okumak hem de yazmak için açılır; dosya konumlayıcı
dosyanın sonuna yerleştirilir. Dosya mevcut değilse oluşturulmaya
çalışılır.
<function>fseek</function> işlevi bu kipte etkisiz olup daima
dosyanın sonuna yazar.
</entry>
</row>
<row>
<entry><literal>'x'</literal></entry>
<entry>
Dosya oluşturulur ve sadece yazmak için açılır; dosya konumlayıcı
dosyanın başlangıcına yerleştirilir. Dosya zaten mevcutsa
<function>fopen</function> &false; döndürürek başarısız olur ve
<constant>E_WARNING</constant> seviyesinde bir hata üretir. Dosya
mevcut değilse oluşturulmaya çalışılır. Bu işlem,
<literal>open(2)</literal> sistem çağrısı için
<literal>O_EXCL|O_CREAT</literal> seçeneklerini belirtmeye
eşdeğerdir.
</entry>
</row>
<row>
<entry><literal>'x+'</literal></entry>
<entry>
Dosya oluşturulur ve hem okumak hem de yazmak için açılır; aksi takdirde <literal>'x'</literal> verilmiş gibi davranır.
eşdeğerdir.
</entry>
</row>
<row>
<entry><literal>'c'</literal></entry>
<entry>
Dosya yalnızca yazmak için açılır. Dosya yoksa oluşturulur. Varsa,
ne kesilir (<literal>'w'</literal> bağımsız değişkenininin aksine),
ne de bu işleve yapılan çağrı başarısız olur
(<literal>'x'</literal> durumunda olduğu gibi). Dosya konumlayıcı
dosyanın başlangıcına yerleştirilir. Dosyayı değiştirmeye
çalışmadan önce bir tavsiye kilidi (<function>flock</function>
bölümüne bakın) isteniyorsa bu yararlı olabilir,
<literal>'w'</literal> kullanımındaki gibi kilitlenmeden önce
dosyayı kesebilir (kesme istenirse, kilit talep edildikten sonra
<function>ftruncate</function> kullanılabilir).
requested).
</entry>
</row>
<row>
<entry><literal>'c+'</literal></entry>
<entry>
Dosya hem okumak hem de yazmak için açılır; aksi takdirde,
<literal>'c'</literal> bağımsız değişkenindeki gibi davranır.
</entry>
</row>
<row>
<entry><literal>'e'</literal></entry>
<entry>
Açık dosya konumlayıcıya close-on-exec bayrağını uygular. Sadece
PHP, POSIX.1-2008 uyumlu sistemler üzerinde derlenmişse
kullanılabilir.
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<note>
<para>
Her işletim sistemi ailesinin farklı satır sonlandırma kuralları
vardır. Bir metin dosyasını yazarken işletim sisteminizin gerektirdiği
satır sonlandırma karakterlerini kullanmanız gerekir. Unix ve
türevleri satırları sonlandırmak için <code>\n</code>, Windows
ailesi <code>\r\n</code>, Mac'ler ise (Mac OS Classic)
<code>\r</code> karakterini kullanır.
</para>
<para>
Dosyalarınızı yazarken yanlış satır sonlandırma karakterleri
kullanırsanız, dosyayı başka uygulamalarda açtığınızda tuhaf
görünebilir.
</para>
<para>
Windows'un <code>\n</code> karakterlerini şeffaf olarak
<code>\r\n</code> karakterlerine dönüştürmesini sağlayan bir
metin kipi dönüşüm seçeneği (<literal>'t'</literal>) vardır. Eğer
satır sonlandırma karakterlerinin değişmeden kalmasını istiyorsanız
ikil kipi devreye sokan <literal>'b'</literal> seçeneğini
kullanabilirsiniz. Bu seçenekleri (<literal>'b'</literal> veya
<literal>'t'</literal>) <parameter>kip</parameter> bağımsız değişkeninde
daima son karakter olarak belirtin.
</para>
<para>
Öntanımlı dönüşüm kipi <literal>'b'</literal>'dir. Salt
metin dosyalarla çalışıyorsanız ve betiğinizde satır sonu karakteri
olarak <code>\n</code> kullanıyorsanız, fakat dosyalarınızın
notepad'in eski sürümleri gibi uygulamalarla da okunabilmesini
istiyorsanız <literal>'t'</literal> kipini kullanmanız, diğer tüm
durumlarda ise <literal>'b'</literal> kipini kullanmanız gerekir.
</para>
<para>
İkil dosyalarla çalışırken 't' seçeneğini belirseniz, verinizle
ilgili tuhaf sorunlarla karşılaşabilirsiniz (örneğin, bozuk görüntü
dosyaları ve <code>\r\n</code> karakterlerine bağlı tuhaf
sorunlar).
</para>
</note>
<note>
<para>
Uyumluluk adına, dosyanızı <literal>'t'</literal> seçeneğinin
kullanılmasını gerektirmeyecek satır sonlandırma karakterleri ile
yazmanızı ve dosyayı açarken daima <literal>'b'</literal> seçeneğini
kullanmanızı hararetle tavsiye ederiz.
</para>
</note>
<note>
<simpara>
<filename>php://output</filename>, <filename>php://input</filename>,
<filename>php://stdin</filename>, <filename>php://stdout</filename>,
<filename>php://stderr</filename> ve <filename>php://fd</filename>
akım sarmalayıcıları için <parameter>kip</parameter> yok sayılır.
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>include_path_kullan</parameter></term>
<listitem>
<para>
Açılacak dosyanın aranacağı yollara <link
linkend="ini.include-path">include_path</link> yönergesinde belirtilen
yolların da eklenmesi için, isteğe bağlı olan bu üçüncü
bağımsız değişkene &true; aktarılmalıdır.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>bağlam</parameter></term>
<listitem>
¬e.context-support;
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Başarı durumunda bir dosya tanıtıcısı aksi takdirde &false; döner.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
&fs.emits.warning.on.failure;
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>7.0.16, 7.1.2</entry>
<entry>
<literal>'e'</literal> seçeneği eklendi.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>- <function>fopen</function> örnekleri</title>
<programlisting role="php">
<![CDATA[
<?php
$dt = fopen("/home/rasmus/file.txt", "r");
$dt = fopen("/home/rasmus/file.gif", "wb");
$dt = fopen("http://www.example.com/", "r");
$dt = fopen("ftp://user:[email protected]/somefile.txt", "w");
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
&warn.ssl-non-standard;
<note>
<para>
PHP'nin sunucu modülü sürümünü kullanıyorsanız ve dosyaları okumak ve
yazmak ile ilgili sorunlar bakımından deneyimliyseniz, sunucu sürecinin bu
dosya ve dizinlere erişim izninin olması gerektiğini aklınızdan
çıkarmamalısınız.
</para>
</note>
<note>
<para>
<parameter>dosyaismi</parameter> bir dizin olduğunda da bu işlev başarılı
olabilir. <parameter>dosyaismi</parameter>'nin bir dosya mı yoksa bir
dizin mi olduğundan emin olamıyorsanız <function>fopen</function> işlevini
çağırmadan önce <function>is_dir</function> kullanmanız gerekebilir.
</para>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><xref linkend="wrappers"/></member>
<member><function>fclose</function></member>
<member><function>fgets</function></member>
<member><function>fread</function></member>
<member><function>fwrite</function></member>
<member><function>fsockopen</function></member>
<member><function>file</function></member>
<member><function>file_exists</function></member>
<member><function>is_readable</function></member>
<member><function>stream_set_timeout</function></member>
<member><function>popen</function></member>
<member><function>stream_context_create</function></member>
<member><function>umask</function></member>
<member><classname>SplFileObject</classname></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->