Configurações em Execução

O comportamento dessas funções é afetado pelas configurações do php.ini.

Opções de configuração da Filesystem e da Streams
Nome Padrão Modificável Changelog
allow_url_fopen "1" PHP_INI_SYSTEM  
allow_url_include "0" PHP_INI_SYSTEM Obsoleta a partir do PHP 7.4.0.
user_agent NULL PHP_INI_ALL  
default_socket_timeout "60" PHP_INI_ALL  
from "" PHP_INI_ALL  
auto_detect_line_endings "0" PHP_INI_ALL Obsoleta a partir do PHP 8.1.0.
sys_temp_dir "" PHP_INI_SYSTEM  

Aqui está uma breve explicação das diretivas de configuração.

allow_url_fopen bool

Esta opção habilita os wrappers fopen sensíveis a URL que permitem o acesso a objetos URL como arquivos. Wrappers padrão são fornecidos para o acesso a arquivos remotos usando os protocolos FTP ou HTTP, e algumas extensões como a zlib podem registar wrappers adicionais.

allow_url_include bool

Esta opção permite o uso de wrappers fopen sensíveis a URL com as seguintes funções: include, include_once, require e require_once.

Nota:

Esta configuração requer que a opção allow_url_fopen esteja habilitada.

user_agent string

Defina o agente do usuário que o PHP irá enviar.

default_socket_timeout int

Tempo limite padrão (em segundos) para streams baseados em soquete. Especificar um valor negativo significa um tempo limite infinito.

from string

O endereço de e-mail que será usado em conexões FTP não autenticadas e como o valor do cabeçalho From: em conexões HTTP, ao usar os wrappers FTP e HTTP, respectivamente.

auto_detect_line_endings bool

Quando habilitada, o PHP examinará os dados lidos por fgets() e file() para verificar se está usando a convenção de fim de linha do Unix, MS-DOS ou Macintosh.

Isso permite que o PHP interopere com sistemas Macintosh, mas o padrão é Off, pois há uma penalidade de desempenho muito pequena ao detectar as convenções de EOL para a primeira linha e também porque as pessoas que usam retornos de carro como separadores de itens nos sistemas Unix podem experimentar problemas de incompatibilidade com versões anteriores.

sys_temp_dir string

add a note

User Contributed Notes 3 notes

up
127
Pistachio
11 years ago
I'm surprised this isn't mentioned in docs here, but to set these values at runtime use "ini_set()". For example:

<?php
ini_set
("auto_detect_line_endings", true);

// Now I can invoke fgets() on files that contain silly \r line endings.
?>
up
-32
Chris
6 years ago
If you want to use auto_detect_line_endings, e.g. to recognize carriage return on a Classic Mac file, you must set it before calling fopen. You can then reset it to its original value. E.g,

$original = ini_get("auto_detect_line_endings");
ini_set("auto_detect_line_endings", true);
$handle = fopen($someFile, "r");
ini_set("auto_detect_line_endings", $original);
while (($line = fgets($handle)) !== false) {
echo "$line\n"; // etc
}

(Reference: https://bugs.php.net/bug.php?id=63341&edit=2)

Keep in mind also that Mac OS X bash does not handle carriage returns well, so if it seems like your code is not working when testing from the command line, redirect your output to a file and then try looking at that. On my system, doing it directly on the command line only showed the last line (with or without this setting turned on).

Also note that this will not do what you want if you have a file with mixed line endings (!). If you really care about that case, you have to do something else, like run the file through a translation first and then read it.
up
-32
traian dot bratucu at gmail dot com
6 years ago
Please note that although you may try to set default_socket_timeout to something over 20s, you may get tricked by the Linux kernel.

The default value of tcp_syn_retries is set to 5, which will effectively timeout any TCP connection after roughly 20s, no matter what limits you set in PHP higher than this.

The value can be altered by root only, like this:

echo 6 > /proc/sys/net/ipv4/tcp_syn_retries

A value of 6, as above, will give you a timeout up to ~45s.
To Top