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 ବିକଳ୍ପ ସେହି ବାହ୍ୟ ପ୍ରୋଗ୍ରାମକୁ କନଫିଗର କରେ ନାହିଁ।

ସମ୍ପର୍କିତ ପ୍ରବନ୍ଧ