Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
154644c7b4 | ||
|
|
60ee2fe878 | ||
|
|
4db45d6171 | ||
|
|
7045a9c4c7 |
4
.github/FUNDING.yml
vendored
4
.github/FUNDING.yml
vendored
@@ -1,5 +1,7 @@
|
|||||||
# These are supported funding model platforms
|
# These are supported funding model platforms
|
||||||
|
|
||||||
github: shivammathur
|
open_collective: setup-php
|
||||||
|
tidelift: "npm/setup-php"
|
||||||
|
community_bridge: setup-php
|
||||||
patreon: shivammathur
|
patreon: shivammathur
|
||||||
custom: https://www.paypal.me/shivammathur
|
custom: https://www.paypal.me/shivammathur
|
||||||
|
|||||||
33
README.md
33
README.md
@@ -16,10 +16,11 @@ Cache PHP extensions in [GitHub Actions](https://github.com/features/actions "Gi
|
|||||||
- [Usage](#memo-usage)
|
- [Usage](#memo-usage)
|
||||||
- [Inputs](#inputs)
|
- [Inputs](#inputs)
|
||||||
- [Workflow](#workflow)
|
- [Workflow](#workflow)
|
||||||
|
- [Thread Safe Setup](#thread-safe-setup)
|
||||||
- [License](#scroll-license)
|
- [License](#scroll-license)
|
||||||
- [Contributions](#1-contributions)
|
- [Contributions](#1-contributions)
|
||||||
- [Support this project](#sparkling_heart-support-this-project)
|
- [Support This Project](#sparkling_heart-support-this-project)
|
||||||
- [Dependencies](#bookmark-dependencies)
|
- [Dependencies](#package-dependencies)
|
||||||
|
|
||||||
## :tada: PHP Support
|
## :tada: PHP Support
|
||||||
|
|
||||||
@@ -48,6 +49,8 @@ Cache PHP extensions in [GitHub Actions](https://github.com/features/actions "Gi
|
|||||||
|
|
||||||
## :memo: Usage
|
## :memo: Usage
|
||||||
|
|
||||||
|
Use this GitHub Action when the extensions you are adding in [setup-php](https://github.com/shivammathur/setup-php "setup-php GitHub Action") are installed and take a long time to setup. If you are using extensions which have the result `Installed and enabled` in the logs like `pecl` extensions on `Ubuntu` or extensions which have custom support, it is recommended to use this action to cache your extensions.
|
||||||
|
|
||||||
### Inputs
|
### Inputs
|
||||||
|
|
||||||
#### `php-version` (required)
|
#### `php-version` (required)
|
||||||
@@ -71,6 +74,7 @@ Cache PHP extensions in [GitHub Actions](https://github.com/features/actions "Gi
|
|||||||
See [action.yml](action.yml "Metadata for this GitHub Action") and usage below for more info.
|
See [action.yml](action.yml "Metadata for this GitHub Action") and usage below for more info.
|
||||||
|
|
||||||
### Workflow
|
### Workflow
|
||||||
|
|
||||||
> Cache extensions in a PHP workflow
|
> Cache extensions in a PHP workflow
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
@@ -111,6 +115,19 @@ jobs:
|
|||||||
extensions: ${{ env.extensions }}
|
extensions: ${{ env.extensions }}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Thread Safe Setup
|
||||||
|
|
||||||
|
If you setup both `TS` and `NTS` PHP versions on `Windows` in your workflow, please add `${{ env.phpts }}` to `key` and `restore-keys` inputs in `actions/cache` step in the above workflow to avoid conflicting cache.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: Cache extensions
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ${{ steps.extcache.outputs.dir }}
|
||||||
|
key: ${{ steps.extcache.outputs.key }}-${{ env.phpts }}
|
||||||
|
restore-keys: ${{ steps.extcache.outputs.key }}-${{ env.phpts }}
|
||||||
|
```
|
||||||
|
|
||||||
## :scroll: License
|
## :scroll: License
|
||||||
|
|
||||||
The scripts and documentation in this project are released under the [MIT License](LICENSE "License for shivammathur/cache-extensions"). This project has multiple [dependencies](https://github.com/shivammathur/cache-extensions/network/dependencies "Dependencies for this PHP Action"). Their licenses can be found in their respective repositories.
|
The scripts and documentation in this project are released under the [MIT License](LICENSE "License for shivammathur/cache-extensions"). This project has multiple [dependencies](https://github.com/shivammathur/cache-extensions/network/dependencies "Dependencies for this PHP Action"). Their licenses can be found in their respective repositories.
|
||||||
@@ -119,15 +136,15 @@ The scripts and documentation in this project are released under the [MIT Licens
|
|||||||
|
|
||||||
Contributions are welcome! See [Contributor's Guide](.github/CONTRIBUTING.md "shivammathur/cache-extensions contribution guide"). If you face any issues while using this or want to suggest a feature/improvement, create an issue [here](https://github.com/shivammathur/cache-extensions/issues "Issues reported").
|
Contributions are welcome! See [Contributor's Guide](.github/CONTRIBUTING.md "shivammathur/cache-extensions contribution guide"). If you face any issues while using this or want to suggest a feature/improvement, create an issue [here](https://github.com/shivammathur/cache-extensions/issues "Issues reported").
|
||||||
|
|
||||||
## :sparkling_heart: Support this project
|
## :sparkling_heart: Support This Project
|
||||||
|
|
||||||
If this action helped you.
|
If this action helped you.
|
||||||
|
|
||||||
- Sponsor the project by subscribing on [Patreon](https://www.patreon.com/shivammathur "Shivam Mathur Patreon") or by contributing using [Paypal](https://www.paypal.me/shivammathur "Shivam Mathur PayPal").
|
- Please star the project and share it. If you blog, please share your experience of using this action.
|
||||||
- Please star the project and share it with the community.
|
- Please consider supporting our work by sponsoring using [Open Collective](https://opencollective.com/setup-php), [Paypal](https://www.paypal.me/shivammathur "Shivam Mathur PayPal") or [Patreon](https://www.patreon.com/shivammathur "Shivam Mathur Patreon").
|
||||||
- If you blog, write about your experience of using this action.
|
- If you use this action at your company, please [reach out](mailto:contact@setup-php.com) to sponsor the project.
|
||||||
- If you need any help using this, please contact me using [Codementor](https://www.codementor.io/shivammathur "Shivam Mathur Codementor")u need any help using this, please contact me using [Codementor](https://www.codementor.io/shivammathur "Shivam Mathur Codementor")
|
|
||||||
|
|
||||||
## :bookmark: Dependencies
|
|
||||||
|
## :package: Dependencies
|
||||||
|
|
||||||
- [Node.js dependencies](https://github.com/shivammathur/setup-php/network/dependencies "Node.js dependencies")
|
- [Node.js dependencies](https://github.com/shivammathur/setup-php/network/dependencies "Node.js dependencies")
|
||||||
107
dist/index.js
vendored
107
dist/index.js
vendored
@@ -953,6 +953,32 @@ class ExecState extends events.EventEmitter {
|
|||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
|
/***/ 82:
|
||||||
|
/***/ (function(__unusedmodule, exports) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
// We use any as a valid input type
|
||||||
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
/**
|
||||||
|
* Sanitizes an input into a string so it can be passed into issueCommand safely
|
||||||
|
* @param input input to sanitize into a string
|
||||||
|
*/
|
||||||
|
function toCommandValue(input) {
|
||||||
|
if (input === null || input === undefined) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
else if (typeof input === 'string' || input instanceof String) {
|
||||||
|
return input;
|
||||||
|
}
|
||||||
|
return JSON.stringify(input);
|
||||||
|
}
|
||||||
|
exports.toCommandValue = toCommandValue;
|
||||||
|
//# sourceMappingURL=utils.js.map
|
||||||
|
|
||||||
|
/***/ }),
|
||||||
|
|
||||||
/***/ 87:
|
/***/ 87:
|
||||||
/***/ (function(module) {
|
/***/ (function(module) {
|
||||||
|
|
||||||
@@ -960,6 +986,42 @@ module.exports = require("os");
|
|||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
|
/***/ 102:
|
||||||
|
/***/ (function(__unusedmodule, exports, __webpack_require__) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
// For internal use, subject to change.
|
||||||
|
var __importStar = (this && this.__importStar) || function (mod) {
|
||||||
|
if (mod && mod.__esModule) return mod;
|
||||||
|
var result = {};
|
||||||
|
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
||||||
|
result["default"] = mod;
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
// We use any as a valid input type
|
||||||
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||||
|
const fs = __importStar(__webpack_require__(747));
|
||||||
|
const os = __importStar(__webpack_require__(87));
|
||||||
|
const utils_1 = __webpack_require__(82);
|
||||||
|
function issueCommand(command, message) {
|
||||||
|
const filePath = process.env[`GITHUB_${command}`];
|
||||||
|
if (!filePath) {
|
||||||
|
throw new Error(`Unable to find environment variable for file command ${command}`);
|
||||||
|
}
|
||||||
|
if (!fs.existsSync(filePath)) {
|
||||||
|
throw new Error(`Missing file at path: ${filePath}`);
|
||||||
|
}
|
||||||
|
fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, {
|
||||||
|
encoding: 'utf8'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
exports.issueCommand = issueCommand;
|
||||||
|
//# sourceMappingURL=file-command.js.map
|
||||||
|
|
||||||
|
/***/ }),
|
||||||
|
|
||||||
/***/ 129:
|
/***/ 129:
|
||||||
/***/ (function(module) {
|
/***/ (function(module) {
|
||||||
|
|
||||||
@@ -987,7 +1049,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|||||||
var __importStar = (this && this.__importStar) || function (mod) {
|
var __importStar = (this && this.__importStar) || function (mod) {
|
||||||
if (mod && mod.__esModule) return mod;
|
if (mod && mod.__esModule) return mod;
|
||||||
var result = {};
|
var result = {};
|
||||||
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||||
__setModuleDefault(result, mod);
|
__setModuleDefault(result, mod);
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
@@ -1050,6 +1112,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const os = __importStar(__webpack_require__(87));
|
const os = __importStar(__webpack_require__(87));
|
||||||
|
const utils_1 = __webpack_require__(82);
|
||||||
/**
|
/**
|
||||||
* Commands
|
* Commands
|
||||||
*
|
*
|
||||||
@@ -1103,28 +1166,14 @@ class Command {
|
|||||||
return cmdStr;
|
return cmdStr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* Sanitizes an input into a string so it can be passed into issueCommand safely
|
|
||||||
* @param input input to sanitize into a string
|
|
||||||
*/
|
|
||||||
function toCommandValue(input) {
|
|
||||||
if (input === null || input === undefined) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
else if (typeof input === 'string' || input instanceof String) {
|
|
||||||
return input;
|
|
||||||
}
|
|
||||||
return JSON.stringify(input);
|
|
||||||
}
|
|
||||||
exports.toCommandValue = toCommandValue;
|
|
||||||
function escapeData(s) {
|
function escapeData(s) {
|
||||||
return toCommandValue(s)
|
return utils_1.toCommandValue(s)
|
||||||
.replace(/%/g, '%25')
|
.replace(/%/g, '%25')
|
||||||
.replace(/\r/g, '%0D')
|
.replace(/\r/g, '%0D')
|
||||||
.replace(/\n/g, '%0A');
|
.replace(/\n/g, '%0A');
|
||||||
}
|
}
|
||||||
function escapeProperty(s) {
|
function escapeProperty(s) {
|
||||||
return toCommandValue(s)
|
return utils_1.toCommandValue(s)
|
||||||
.replace(/%/g, '%25')
|
.replace(/%/g, '%25')
|
||||||
.replace(/\r/g, '%0D')
|
.replace(/\r/g, '%0D')
|
||||||
.replace(/\n/g, '%0A')
|
.replace(/\n/g, '%0A')
|
||||||
@@ -1158,6 +1207,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const command_1 = __webpack_require__(431);
|
const command_1 = __webpack_require__(431);
|
||||||
|
const file_command_1 = __webpack_require__(102);
|
||||||
|
const utils_1 = __webpack_require__(82);
|
||||||
const os = __importStar(__webpack_require__(87));
|
const os = __importStar(__webpack_require__(87));
|
||||||
const path = __importStar(__webpack_require__(622));
|
const path = __importStar(__webpack_require__(622));
|
||||||
/**
|
/**
|
||||||
@@ -1184,9 +1235,17 @@ var ExitCode;
|
|||||||
*/
|
*/
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
function exportVariable(name, val) {
|
function exportVariable(name, val) {
|
||||||
const convertedVal = command_1.toCommandValue(val);
|
const convertedVal = utils_1.toCommandValue(val);
|
||||||
process.env[name] = convertedVal;
|
process.env[name] = convertedVal;
|
||||||
command_1.issueCommand('set-env', { name }, convertedVal);
|
const filePath = process.env['GITHUB_ENV'] || '';
|
||||||
|
if (filePath) {
|
||||||
|
const delimiter = '_GitHubActionsFileCommandDelimeter_';
|
||||||
|
const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`;
|
||||||
|
file_command_1.issueCommand('ENV', commandValue);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
command_1.issueCommand('set-env', { name }, convertedVal);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
exports.exportVariable = exportVariable;
|
exports.exportVariable = exportVariable;
|
||||||
/**
|
/**
|
||||||
@@ -1202,7 +1261,13 @@ exports.setSecret = setSecret;
|
|||||||
* @param inputPath
|
* @param inputPath
|
||||||
*/
|
*/
|
||||||
function addPath(inputPath) {
|
function addPath(inputPath) {
|
||||||
command_1.issueCommand('add-path', {}, inputPath);
|
const filePath = process.env['GITHUB_PATH'] || '';
|
||||||
|
if (filePath) {
|
||||||
|
file_command_1.issueCommand('PATH', inputPath);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
command_1.issueCommand('add-path', {}, inputPath);
|
||||||
|
}
|
||||||
process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;
|
process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;
|
||||||
}
|
}
|
||||||
exports.addPath = addPath;
|
exports.addPath = addPath;
|
||||||
@@ -1607,7 +1672,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|||||||
var __importStar = (this && this.__importStar) || function (mod) {
|
var __importStar = (this && this.__importStar) || function (mod) {
|
||||||
if (mod && mod.__esModule) return mod;
|
if (mod && mod.__esModule) return mod;
|
||||||
var result = {};
|
var result = {};
|
||||||
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||||
__setModuleDefault(result, mod);
|
__setModuleDefault(result, mod);
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|||||||
1962
package-lock.json
generated
1962
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
32
package.json
32
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "cache-extensions",
|
"name": "cache-extensions",
|
||||||
"version": "1.1.2",
|
"version": "1.2.0",
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "Cache extensions in GitHub Actions",
|
"description": "Cache extensions in GitHub Actions",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
@@ -24,26 +24,26 @@
|
|||||||
"author": "shivammathur",
|
"author": "shivammathur",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.2.4",
|
"@actions/core": "^1.2.6",
|
||||||
"@actions/exec": "^1.0.4"
|
"@actions/exec": "^1.0.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^26.0.8",
|
"@types/jest": "^26.0.14",
|
||||||
"@types/node": "^14.0.27",
|
"@types/node": "^14.11.2",
|
||||||
"@typescript-eslint/eslint-plugin": "^3.8.0",
|
"@typescript-eslint/eslint-plugin": "^4.3.0",
|
||||||
"@typescript-eslint/parser": "^3.8.0",
|
"@typescript-eslint/parser": "^4.3.0",
|
||||||
"@zeit/ncc": "^0.22.3",
|
"@zeit/ncc": "^0.22.3",
|
||||||
"eslint": "^7.6.0",
|
"eslint": "^7.10.0",
|
||||||
"eslint-config-prettier": "^6.11.0",
|
"eslint-config-prettier": "^6.12.0",
|
||||||
"eslint-plugin-import": "^2.22.0",
|
"eslint-plugin-import": "^2.22.1",
|
||||||
"eslint-plugin-jest": "^23.20.0",
|
"eslint-plugin-jest": "^24.0.2",
|
||||||
"eslint-plugin-prettier": "^3.1.4",
|
"eslint-plugin-prettier": "^3.1.4",
|
||||||
"husky": "^4.2.5",
|
"husky": "^4.3.0",
|
||||||
"jest": "^26.2.2",
|
"jest": "^26.4.2",
|
||||||
"jest-circus": "^26.2.2",
|
"jest-circus": "^26.4.2",
|
||||||
"prettier": "^2.0.5",
|
"prettier": "^2.1.2",
|
||||||
"ts-jest": "^26.1.4",
|
"ts-jest": "^26.4.1",
|
||||||
"typescript": "^3.9.7"
|
"typescript": "^4.0.3"
|
||||||
},
|
},
|
||||||
"husky": {
|
"husky": {
|
||||||
"skipCI": true,
|
"skipCI": true,
|
||||||
|
|||||||
@@ -87,9 +87,9 @@ elif [ "$os" = "Darwin" ]; then
|
|||||||
else
|
else
|
||||||
os="Windows"
|
os="Windows"
|
||||||
dir='C:\\tools\\php\\ext'
|
dir='C:\\tools\\php\\ext'
|
||||||
if [ "$version" = "8.0" ] && [[ "$extensions" == *pcov* ]]; then
|
fi
|
||||||
key="$key-pcov_20200410"
|
if [ "$version" = "8.0" ]; then
|
||||||
fi
|
key="$key-20200930"
|
||||||
fi
|
fi
|
||||||
key="$os"-ext-"$version"-$(echo -n "$extensions-$key" | openssl dgst -sha256 | cut -d ' ' -f 2)
|
key="$os"-ext-"$version"-$(echo -n "$extensions-$key" | openssl dgst -sha256 | cut -d ' ' -f 2)
|
||||||
echo "::set-output name=dir::$dir"
|
echo "::set-output name=dir::$dir"
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ bcmath
|
|||||||
bz2
|
bz2
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dom
|
dom
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ bz2
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dba
|
dba
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ bz2
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dba
|
dba
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ apcu
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dom
|
dom
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ apcu
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dom
|
dom
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ bz2
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dba
|
dba
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ bz2
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dba
|
dba
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ bz2
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dba
|
dba
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ bz2
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dba
|
dba
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ bcmath
|
|||||||
bz2
|
bz2
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dom
|
dom
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ bz2
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dba
|
dba
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ bz2
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dba
|
dba
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ apcu
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dom
|
dom
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ apcu
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dom
|
dom
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ apcu
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dom
|
dom
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ apcu
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dom
|
dom
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ apcu
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dom
|
dom
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ bz2
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dba
|
dba
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ bz2
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dom
|
dom
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ bcmath
|
|||||||
bz2
|
bz2
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dom
|
dom
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ bz2
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dba
|
dba
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ bz2
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dba
|
dba
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ bz2
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dba
|
dba
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ bz2
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dba
|
dba
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ bz2
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dba
|
dba
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ bz2
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dba
|
dba
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ bz2
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dba
|
dba
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ bz2
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dba
|
dba
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ bz2
|
|||||||
calendar
|
calendar
|
||||||
Core
|
Core
|
||||||
ctype
|
ctype
|
||||||
|
cubrid
|
||||||
curl
|
curl
|
||||||
date
|
date
|
||||||
dom
|
dom
|
||||||
|
|||||||
Reference in New Issue
Block a user