本文整理汇总了PHP中HttpClient::getPackagedCaFile方法的典型用法代码示例。如果您正苦于以下问题:PHP HttpClient::getPackagedCaFile方法的具体用法?PHP HttpClient::getPackagedCaFile怎么用?PHP HttpClient::getPackagedCaFile使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HttpClient
的用法示例。
在下文中一共展示了HttpClient::getPackagedCaFile方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: installSlicer
function installSlicer($version, $installDir, $filename, $quiet, $disableTls, $cafile)
{
$installPath = (is_dir($installDir) ? rtrim($installDir, '/') . '/' : '') . $filename;
$installDir = realpath($installDir) ? realpath($installDir) : getcwd();
$file = $installDir . DIRECTORY_SEPARATOR . $filename;
if (is_readable($file)) {
@unlink($file);
}
if (FALSE === $disableTls && empty($cafile) && !HttpClient::getSystemCaRootBundlePath()) {
$errorHandler = new ErrorHandler();
set_error_handler([$errorHandler, 'handleError']);
$home = getenv('COMPOSER_HOME');
if (!$home) {
if (defined('PHP_WINDOWS_VERSION_MAJOR')) {
if (!getenv('APPDATA')) {
throw new RuntimeException('The APPDATA or SLICER_HOME environment variable must be set for composer to install correctly');
}
$home = strtr(getenv('APPDATA'), '\\', '/') . '/Slicer';
} else {
if (!getenv('HOME')) {
throw new RuntimeException('The HOME or SLICER_HOME environment variable must be set for composer to install correctly');
}
$home = rtrim(getenv('HOME'), '/') . '/.slicer';
}
}
$target = $home . '/cacert.pem';
if (!is_dir($home)) {
@mkdir($home, 0777, TRUE);
}
$write = file_put_contents($target, HttpClient::getPackagedCaFile(), LOCK_EX);
@chmod($target, 0644);
restore_error_handler();
if (!$write) {
throw new RuntimeException('Unable to write bundled cacert.pem to: ' . $target);
}
$cafile = $target;
}
$httpClient = new HttpClient($disableTls, $cafile);
$retries = 3;
while ($retries--) {
if (!$quiet) {
out("Downloading...", 'info');
}
$uriScheme = FALSE === $disableTls ? 'https' : 'http';
$urlPath = (FALSE !== $version ? "/download/{$version}" : '') . '/slicer.phar';
$url = "{$uriScheme}://getslicer.com{$urlPath}";
$errorHandler = new ErrorHandler();
set_error_handler([$errorHandler, 'handleError']);
$fh = fopen($file, 'w');
if (!$fh) {
out('Could not create file ' . $file . ': ' . $errorHandler->message, 'error');
}
if (!fwrite($fh, $httpClient->get($url))) {
out('Download failed: ' . $errorHandler->message, 'error');
}
fclose($fh);
restore_error_handler();
if ($errorHandler->message) {
continue;
}
try {
// create a temp file ending in .phar since the Phar class only accepts that
if ('.phar' !== substr($file, -5)) {
copy($file, $file . '.tmp.phar');
$pharFile = $file . '.tmp.phar';
} else {
$pharFile = $file;
}
if (!ini_get('phar.readonly')) {
// test the phar validity
$phar = new Phar($pharFile);
// free the variable to unlock the file
unset($phar);
}
// clean up temp file if needed
if ($file !== $pharFile) {
unlink($pharFile);
}
break;
} catch (Exception $e) {
if (!$e instanceof UnexpectedValueException && !$e instanceof PharException) {
throw $e;
}
// clean up temp file if needed
if ($file !== $pharFile) {
unlink($pharFile);
}
unlink($file);
if ($retries) {
if (!$quiet) {
out('The download is corrupt, retrying...', 'error');
}
} else {
out('The download is corrupt (' . $e->getMessage() . '), aborting.', 'error');
exit(1);
}
}
}
if ($errorHandler->message) {
out('The download failed repeatedly, aborting.', 'error');
//.........这里部分代码省略.........
示例2: installComposer
/**
* installs composer to the current working directory
*/
function installComposer($version, $installDir, $filename, $quiet, $disableTls, $cafile, $channel)
{
$installPath = (is_dir($installDir) ? rtrim($installDir, '/') . '/' : '') . $filename;
$installDir = realpath($installDir) ? realpath($installDir) : getcwd();
$file = $installDir . DIRECTORY_SEPARATOR . $filename;
if (is_readable($file)) {
@unlink($file);
}
$home = getHomeDir();
file_put_contents($home . '/keys.dev.pub', <<<DEVPUBKEY
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnBDHjZS6e0ZMoK3xTD7f
FNCzlXjX/Aie2dit8QXA03pSrOTbaMnxON3hUL47Lz3g1SC6YJEMVHr0zYq4elWi
i3ecFEgzLcj+pZM5X6qWu2Ozz4vWx3JYo1/a/HYdOuW9e3lwS8VtS0AVJA+U8X0A
hZnBmGpltHhO8hPKHgkJtkTUxCheTcbqn4wGHl8Z2SediDcPTLwqezWKUfrYzu1f
o/j3WFwFs6GtK4wdYtiXr+yspBZHO3y1udf8eFFGcb2V3EaLOrtfur6XQVizjOuk
8lw5zzse1Qp/klHqbDRsjSzJ6iL6F4aynBc6Euqt/8ccNAIz0rLjLhOraeyj4eNn
8iokwMKiXpcrQLTKH+RH1JCuOVxQ436bJwbSsp1VwiqftPQieN+tzqy+EiHJJmGf
TBAbWcncicCk9q2md+AmhNbvHO4PWbbz9TzC7HJb460jyWeuMEvw3gNIpEo2jYa9
pMV6cVqnSa+wOc0D7pC9a6bne0bvLcm3S+w6I5iDB3lZsb3A9UtRiSP7aGSo7D72
8tC8+cIgZcI7k9vjvOqH+d7sdOU2yPCnRY6wFh62/g8bDnUpr56nZN1G89GwM4d4
r/TU7BQQIzsZgAiqOGXvVklIgAMiV0iucgf3rNBLjjeNEwNSTTG9F0CtQ+7JLwaE
wSEuAuRm+pRqi8BRnQ/GKUcCAwEAAQ==
-----END PUBLIC KEY-----
DEVPUBKEY
);
file_put_contents($home . '/keys.tags.pub', <<<TAGSPUBKEY
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0Vi/2K6apCVj76nCnCl2
MQUPdK+A9eqkYBacXo2wQBYmyVlXm2/n/ZsX6pCLYPQTHyr5jXbkQzBw8SKqPdlh
vA7NpbMeNCz7wP/AobvUXM8xQuXKbMDTY2uZ4O7sM+PfGbptKPBGLe8Z8d2sUnTO
bXtX6Lrj13wkRto7st/w/Yp33RHe9SlqkiiS4MsH1jBkcIkEHsRaveZzedUaxY0M
mba0uPhGUInpPzEHwrYqBBEtWvP97t2vtfx8I5qv28kh0Y6t+jnjL1Urid2iuQZf
noCMFIOu4vksK5HxJxxrN0GOmGmwVQjOOtxkwikNiotZGPR4KsVj8NnBrLX7oGuM
nQvGciiu+KoC2r3HDBrpDeBVdOWxDzT5R4iI0KoLzFh2pKqwbY+obNPS2bj+2dgJ
rV3V5Jjry42QOCBN3c88wU1PKftOLj2ECpewY6vnE478IipiEu7EAdK8Zwj2LmTr
RKQUSa9k7ggBkYZWAeO/2Ag0ey3g2bg7eqk+sHEq5ynIXd5lhv6tC5PBdHlWipDK
tl2IxiEnejnOmAzGVivE1YGduYBjN+mjxDVy8KGBrjnz1JPgAvgdwJ2dYw4Rsc/e
TzCFWGk/HM6a4f0IzBWbJ5ot0PIi4amk07IotBXDWwqDiQTwyuGCym5EqWQ2BD95
RGv89BPD+2DLnJysngsvVaUCAwEAAQ==
-----END PUBLIC KEY-----
TAGSPUBKEY
);
if (false === $disableTls && empty($cafile) && !HttpClient::getSystemCaRootBundlePath()) {
$errorHandler = new ErrorHandler();
set_error_handler(array($errorHandler, 'handleError'));
$target = $home . '/cacert.pem';
$write = file_put_contents($target, HttpClient::getPackagedCaFile(), LOCK_EX);
@chmod($target, 0644);
restore_error_handler();
if (!$write) {
throw new RuntimeException('Unable to write bundled cacert.pem to: ' . $target);
}
$cafile = $target;
}
$httpClient = new HttpClient($disableTls, $cafile);
$uriScheme = false === $disableTls ? 'https' : 'http';
if (!$version) {
$versions = json_decode($httpClient->get($uriScheme . '://getcomposer.org/versions'), true);
foreach ($versions[$channel] as $candidate) {
if ($candidate['min-php'] <= PHP_VERSION_ID) {
$version = $candidate['version'];
$downloadUrl = $candidate['path'];
break;
}
}
if (!$version) {
throw new RuntimeException('There is no version of Composer available for your PHP version (' . PHP_VERSION . ')');
}
} else {
$downloadUrl = "/download/{$version}/composer.phar";
}
$retries = 3;
while ($retries--) {
if (!$quiet) {
out("Downloading {$version}...", 'info');
}
$url = "{$uriScheme}://getcomposer.org{$downloadUrl}";
$errorHandler = new ErrorHandler();
set_error_handler(array($errorHandler, 'handleError'));
// download signature file
if (false === $disableTls) {
$signature = $httpClient->get($url . '.sig');
if (!$signature) {
out('Download failed: ' . $errorHandler->message, 'error');
} else {
$signature = json_decode($signature, true);
$signature = base64_decode($signature['sha384']);
}
}
$fh = fopen($file, 'w');
if (!$fh) {
out('Could not create file ' . $file . ': ' . $errorHandler->message, 'error');
}
if (!fwrite($fh, $httpClient->get($url))) {
out('Download failed: ' . $errorHandler->message, 'error');
}
//.........这里部分代码省略.........