PHP Alt Komutuna Proxy Ortamı Aktarma
Tek bir indirici için proc_open'ın ayrı ortamını ve argüman dizisini kullanın, devralınan değerleri bilinçli olarak koruyun.
PHP 7.4 veya üzeri için komut argümanlarını ve alt süreç ortamını ayrı tutun:
$environment = array_replace(getenv(), [
'http_proxy' => 'http://proxy.example:8080',
'https_proxy' => 'http://proxy.example:8080',
]);
$process = proc_open(
['/usr/bin/curl', '--fail', '--max-time', '30',
'--output', $outputFile, 'https://downloads.example/data.csv'],
$descriptorSpec,
$pipes,
null,
$environment
);$outputFile ve $descriptorSpec uygulamanın mevcut çıktı işlemesinden gelir. Başlatmanın başarısız olup olmadığını denetleyin, boruları yönetin ve süreci bu yaşam döngüsü boyunca kapatın.
array_replace(getenv(), ...) üst ortamı korurken bu iki değeri alt süreç için değiştirir. Devralınan büyük harfli proxy ve atlama değişkenlerini, amaçlanan yolu değiştirebilecekleri durumlarda gözden geçirin.
Argüman dizisi, bir kabuğun kimlik bilgilerindeki ve işaretlerini, dolar işaretlerini veya boşlukları yorumlamasını önler. Kabuk komutuna gömülü hesap taşıyan bir atama yoktur.
Bu örnek, gösterilen değişkenleri desteklediği için curl'ü seçer. HTTP proxy listesinden bir adres, genel bir HTTP yolu için bu ortam değerlerini doldurabilir. Farklı bir çalıştırılabilir dosya kendi desteklenen proxy arayüzüne ihtiyaç duyar; PHP'nin kendi cURL seçenekleri o harici programı yapılandırmaz.