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(), ...) ಪಾಲಕ ಪರಿಸರವನ್ನು ಉಳಿಸಿಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಮಗುವಿಗೆ ಈ ಎರಡು ಮೌಲ್ಯಗಳನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ. ಆನುವಂಶಿಕ ದೊಡ್ಡ ಅಕ್ಷರದ ಪ್ರಾಕ್ಸಿ ಮತ್ತು ಬೈಪಾಸ್ ವೇರಿಯೇಬಲ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ, ಅವು ಉದ್ದೇಶಿತ ಮಾರ್ಗವನ್ನು ಬದಲಿಸಬಹುದಾದಾಗ.
ಆರ್ಗ್ಯುಮೆಂಟ್ ಸರಣಿಯು ಶೆಲ್ಗೆ ರುಜುವಾತುಗಳ ಆಂಪರ್ಸ್ಯಾಂಡ್, ಡಾಲರ್ ಚಿಹ್ನೆಗಳು ಅಥವಾ ಸ್ಥಳಗಳನ್ನು ಅರ್ಥೈಸದಂತೆ ತಡೆಯುತ್ತದೆ. ಶೆಲ್ ಆಜ್ಞೆಯಲ್ಲಿ ಖಾತೆ ಹೊತ್ತ ನಿಯೋಜನೆ ಯಾವುದೂ ಹುದುಗಿಸಲಾಗಿಲ್ಲ.
ಈ ಉದಾಹರಣೆ curl ಅನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತದೆ ಏಕೆಂದರೆ ಅದು ತೋರಿಸಿದ ವೇರಿಯೇಬಲ್ಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ. HTTP ಪ್ರಾಕ್ಸಿ ಪಟ್ಟಿಯಿಂದ ವಿಳಾಸವು ಸಾರ್ವಜನಿಕ HTTP ಮಾರ್ಗಕ್ಕಾಗಿ ಆ ಪರಿಸರ ಮೌಲ್ಯಗಳನ್ನು ತುಂಬಬಹುದು. ಬೇರೆ ಎಕ್ಸಿಕ್ಯೂಟೇಬಲ್ಗೆ ಅದರದೇ ಬೆಂಬಲಿತ ಪ್ರಾಕ್ಸಿ ಇಂಟರ್ಫೇಸ್ ಬೇಕು; PHP ಯ ಸ್ವಂತ cURL ಆಯ್ಕೆಗಳು ಆ ಬಾಹ್ಯ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಸಂರಚಿಸುವುದಿಲ್ಲ.