PHP చైల్డ్ కమాండ్కు ప్రాక్సీ పర్యావరణాన్ని అందించడం
ఒక డౌన్లోడర్ కోసం proc_open యొక్క ప్రత్యేక పర్యావరణాన్ని మరియు ఆర్గ్యుమెంట్ శ్రేణిని ఉపయోగించండి, వారసత్వంగా వచ్చిన విలువలను ఉద్దేశపూర్వకంగా కాపాడండి.
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 ఎంపికలు ఆ బాహ్య ప్రోగ్రామ్ను కాన్ఫిగర్ చేయవు.