PHP 7.4 లేదా తరువాతి కోసం, కమాండ్ ఆర్గ్యుమెంట్‌లను మరియు చైల్డ్ ప్రాసెస్ పర్యావరణాన్ని విడిగా ఉంచండి:

$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 మరియు $descriptorSpec అప్లికేషన్ యొక్క ఇప్పటికే ఉన్న అవుట్‌పుట్ నిర్వహణ నుండి వస్తాయి. విఫలమైన ప్రారంభాన్ని తనిఖీ చేయండి, పైపులను నిర్వహించండి మరియు ఆ జీవిత చక్రం ద్వారా ప్రాసెస్‌ను మూసివేయండి.

array_replace(getenv(), ...) పేరెంట్ పర్యావరణాన్ని కాపాడుతుంది మరియు పిల్లల కోసం ఈ రెండు విలువలను భర్తీ చేస్తుంది. వారసత్వంగా వచ్చిన పెద్ద అక్షరాల ప్రాక్సీ మరియు బైపాస్ వేరియబుల్‌లను అవి ఉద్దేశించిన మార్గాన్ని మార్చగలిగినప్పుడు సమీక్షించండి.

ఆర్గ్యుమెంట్ శ్రేణి shell కు ఆధారాలలోని ఆంపర్‌స్యాండ్‌లు, డాలర్ చిహ్నాలు లేదా ఖాళీలను అన్వయించకుండా నిరోధిస్తుంది. shell కమాండ్‌లో ఖాతాను మోసుకెళ్లే ఏ కేటాయింపు కూడా పొందుపరచబడలేదు.

ఈ ఉదాహరణ curl ను ఎంచుకుంటుంది ఎందుకంటే ఇది చూపిన వేరియబుల్‌లకు మద్దతు ఇస్తుంది. HTTP ప్రాక్సీ జాబితా నుండి చిరునామా ప్రజా HTTP మార్గం కోసం ఆ పర్యావరణ విలువలను నింపగలదు. వేరే ఎగ్జిక్యూటబుల్‌కు దాని స్వంత మద్దతు ప్రాక్సీ ఇంటర్‌ఫేస్ అవసరం; PHP యొక్క స్వంత cURL ఎంపికలు ఆ బాహ్య ప్రోగ్రామ్‌ను కాన్ఫిగర్ చేయవు.

సంబంధిత వ్యాసాలు