mirror of
https://github.com/Karaka-Management/Build.git
synced 2026-01-11 03:38:40 +00:00
bug fixes
This commit is contained in:
parent
bf564fcd1f
commit
c551fe912a
2
.github/workflows/greetings.yml
vendored
2
.github/workflows/greetings.yml
vendored
|
|
@ -9,5 +9,5 @@ jobs:
|
|||
- uses: actions/first-interaction@v1
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
issue-message: 'Thank you for createing this issue. We will check it as soon as possible.'
|
||||
issue-message: 'Thank you for creating this issue. We will check it as soon as possible.'
|
||||
pr-message: 'Thank you for your pull request. We will check it as soon as possible.'
|
||||
|
|
|
|||
|
|
@ -2438,39 +2438,39 @@ return [
|
|||
'Modules\News\tests\Models\NewsArticleMapperTest:testDefault' => ['description' => 'The model can be created and read from the database', 'type' => 'module'],
|
||||
|
||||
// models
|
||||
'Modules\Helper\tests\Models\ReportTest' => ['description' => 'Report model', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\ReportTest:testDefault' => ['description' => 'The model has the expected default values after initialization', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\ReportTest:testCreatedByInputOutput' => ['description' => 'The creator can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\ReportTest:testTitleInputOutput' => ['description' => 'The title can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\ReportTest:testStatusInputOutput' => ['description' => 'The status can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\ReportTest:testDescriptionInputOutput' => ['description' => 'The description can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\ReportTest:testDescriptionRawInputOutput' => ['description' => 'The raw description can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\ReportTest:testTemplateInputOutput' => ['description' => 'The template can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\ReportTest:testSourceInputOutput' => ['description' => 'The source can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\ReportTest:testToArray' => ['description' => 'Report data can be turned into an array', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\ReportTest:testJsonSerialize' => ['description' => 'Report data can be json serialized', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\ReportTest' => ['description' => 'Report model', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\ReportTest:testDefault' => ['description' => 'The model has the expected default values after initialization', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\ReportTest:testCreatedByInputOutput' => ['description' => 'The creator can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\ReportTest:testTitleInputOutput' => ['description' => 'The title can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\ReportTest:testStatusInputOutput' => ['description' => 'The status can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\ReportTest:testDescriptionInputOutput' => ['description' => 'The description can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\ReportTest:testDescriptionRawInputOutput' => ['description' => 'The raw description can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\ReportTest:testTemplateInputOutput' => ['description' => 'The template can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\ReportTest:testSourceInputOutput' => ['description' => 'The source can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\ReportTest:testToArray' => ['description' => 'Report data can be turned into an array', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\ReportTest:testJsonSerialize' => ['description' => 'Report data can be json serialized', 'type' => 'module'],
|
||||
|
||||
'Modules\Helper\tests\Models\ReportMapperTest' => ['description' => 'Report database mapper', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\ReportMapperTest:testCR' => ['description' => 'The model can be created and read from the database', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\ReportMapperTest' => ['description' => 'Report database mapper', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\ReportMapperTest:testCR' => ['description' => 'The model can be created and read from the database', 'type' => 'module'],
|
||||
|
||||
'Modules\Helper\tests\Models\TemplateTest' => ['description' => 'Template model', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\TemplateTest:testDefault' => ['description' => 'The model has the expected default values after initialization', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\TemplateTest:testUnitInputOutput' => ['description' => 'The unit can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\TemplateTest:testCreatedByInputOutput' => ['description' => 'The creator can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\TemplateTest:testNameInputOutput' => ['description' => 'The title can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\TemplateTest:testStatusInputOutput' => ['description' => 'The status can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\TemplateTest:testStandalonInputOutput' => ['description' => 'The template can be set as standalone and returned correctly', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\TemplateTest:testDescriptionInputOutput' => ['description' => 'The description can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\TemplateTest:testDescriptionRawInputOutput' => ['description' => 'The raw description can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\TemplateTest:testExpectedInputOutput' => ['description' => 'The expected report files can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\TemplateTest:testSourceInputOutput' => ['description' => 'The source can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\TemplateTest:testDatatypeInputOutput' => ['description' => 'The data storage type can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\TemplateTest:testToArray' => ['description' => 'Template data can be turned into an array', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\TemplateTest:testJsonSerialize' => ['description' => 'Template data can be json serialized', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\TemplateTest' => ['description' => 'Template model', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\TemplateTest:testDefault' => ['description' => 'The model has the expected default values after initialization', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\TemplateTest:testUnitInputOutput' => ['description' => 'The unit can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\TemplateTest:testCreatedByInputOutput' => ['description' => 'The creator can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\TemplateTest:testNameInputOutput' => ['description' => 'The title can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\TemplateTest:testStatusInputOutput' => ['description' => 'The status can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\TemplateTest:testStandalonInputOutput' => ['description' => 'The template can be set as standalone and returned correctly', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\TemplateTest:testDescriptionInputOutput' => ['description' => 'The description can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\TemplateTest:testDescriptionRawInputOutput' => ['description' => 'The raw description can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\TemplateTest:testExpectedInputOutput' => ['description' => 'The expected report files can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\TemplateTest:testSourceInputOutput' => ['description' => 'The source can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\TemplateTest:testDatatypeInputOutput' => ['description' => 'The data storage type can be set and returned correctly', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\TemplateTest:testToArray' => ['description' => 'Template data can be turned into an array', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\TemplateTest:testJsonSerialize' => ['description' => 'Template data can be json serialized', 'type' => 'module'],
|
||||
|
||||
'Modules\Helper\tests\Models\TemplateMapperTest' => ['description' => 'Template database mapper', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\TemplateMapperTest:testCR' => ['description' => 'The model can be created and read from the database', 'type' => 'module'],
|
||||
'Modules\Helper\tests\Models\TemplateMapperTest:testNewest' => ['description' => 'The newest model can be read from the database', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\TemplateMapperTest' => ['description' => 'Template database mapper', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\TemplateMapperTest:testCR' => ['description' => 'The model can be created and read from the database', 'type' => 'module'],
|
||||
'Modules\Script\tests\Models\TemplateMapperTest:testNewest' => ['description' => 'The newest model can be read from the database', 'type' => 'module'],
|
||||
|
||||
// models
|
||||
'Modules\Knowledgebase\tests\Models\WikiAppTest' => ['description' => 'Wiki application', 'type' => 'module'],
|
||||
|
|
@ -3041,29 +3041,29 @@ return [
|
|||
|
||||
'Modules\Help\tests\Controller\SearchControllerTest:testHelpSearch' => ['description' => '', 'group' => 'module'],
|
||||
|
||||
'Modules\Helper\tests\Controller\ApiControllerTest:testStandaloneTemplateCreate' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Helper\tests\Controller\ApiControllerTest:testTemplateCreate' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Helper\tests\Controller\ApiControllerTest:testTemplateCreateInvalidPermission' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Helper\tests\Controller\ApiControllerTest:testExportPdf' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Helper\tests\Controller\ApiControllerTest:testExportXlsx' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Helper\tests\Controller\ApiControllerTest:testExportDocx' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Helper\tests\Controller\ApiControllerTest:testExportPptx' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Helper\tests\Controller\ApiControllerTest:testExportCsv' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Helper\tests\Controller\ApiControllerTest:testExportJson' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Helper\tests\Controller\ApiControllerTest:testExportInvalidPermission' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Helper\tests\Controller\ApiControllerTest:testExportOtherType' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Helper\tests\Controller\ApiControllerTest:testExportInvalidData' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Helper\tests\Controller\ApiControllerTest:testApiTemplateCreateInvalidData' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Helper\tests\Controller\ApiControllerTest:testReportCreate' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Helper\tests\Controller\ApiControllerTest:testExportOtherTypeNotStandalone' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Helper\tests\Controller\ApiControllerTest:testReportCreateInvalidPermission' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Helper\tests\Controller\ApiControllerTest:testApiReportCreateInvalidData' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Helper\tests\Models\NullReportTest:testNull' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Helper\tests\Models\NullReportTest:testId' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Helper\tests\Models\NullTemplateTest:testNull' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Helper\tests\Models\NullTemplateTest:testId' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Helper\tests\Models\TemplateTest:testTagInputOutput' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Helper\tests\Models\TemplateTest:testNewestReportOutput' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Script\tests\Controller\ApiControllerTest:testStandaloneTemplateCreate' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Script\tests\Controller\ApiControllerTest:testTemplateCreate' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Script\tests\Controller\ApiControllerTest:testTemplateCreateInvalidPermission' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Script\tests\Controller\ApiControllerTest:testExportPdf' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Script\tests\Controller\ApiControllerTest:testExportXlsx' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Script\tests\Controller\ApiControllerTest:testExportDocx' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Script\tests\Controller\ApiControllerTest:testExportPptx' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Script\tests\Controller\ApiControllerTest:testExportCsv' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Script\tests\Controller\ApiControllerTest:testExportJson' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Script\tests\Controller\ApiControllerTest:testExportInvalidPermission' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Script\tests\Controller\ApiControllerTest:testExportOtherType' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Script\tests\Controller\ApiControllerTest:testExportInvalidData' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Script\tests\Controller\ApiControllerTest:testApiTemplateCreateInvalidData' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Script\tests\Controller\ApiControllerTest:testReportCreate' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Script\tests\Controller\ApiControllerTest:testExportOtherTypeNotStandalone' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Script\tests\Controller\ApiControllerTest:testReportCreateInvalidPermission' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Script\tests\Controller\ApiControllerTest:testApiReportCreateInvalidData' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Script\tests\Models\NullReportTest:testNull' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Script\tests\Models\NullReportTest:testId' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Script\tests\Models\NullTemplateTest:testNull' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Script\tests\Models\NullTemplateTest:testId' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Script\tests\Models\TemplateTest:testTagInputOutput' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Script\tests\Models\TemplateTest:testNewestReportOutput' => ['description' => '', 'group' => 'module'],
|
||||
|
||||
'Modules\HumanResourceManagement\tests\Controller\ApiControllerTest:testEmployeeFromAccountCreate' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\HumanResourceManagement\tests\Controller\ApiControllerTest:testNewEmployeeCreate' => ['description' => '', 'group' => 'module'],
|
||||
|
|
@ -3258,15 +3258,10 @@ return [
|
|||
'Modules\Media\tests\Models\MediaTest:testTagInputOutput' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Media\tests\Models\MediaTest:testTagRemove' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Media\tests\Models\MediaTest:testSerialize' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Media\tests\Models\MediaTypeTest:testDefault' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Media\tests\Models\MediaTypeTest:testL11nInputOutput' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Media\tests\Models\MediaTypeTest:testSerialize' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Media\tests\Models\NullCollectionTest:testNull' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Media\tests\Models\NullCollectionTest:testId' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Media\tests\Models\NullMediaTest:testNull' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Media\tests\Models\NullMediaTest:testId' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Media\tests\Models\NullMediaTypeTest:testNull' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Media\tests\Models\NullMediaTypeTest:testId' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Media\tests\Views\MediaViewTest:testFilePath' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Media\tests\Views\MediaViewTest:testDirPath' => ['description' => '', 'group' => 'module'],
|
||||
'Modules\Media\tests\Views\MediaViewTest:testIscollection' => ['description' => '', 'group' => 'module'],
|
||||
|
|
|
|||
67
Helper/Php/buildER.php
Normal file
67
Helper/Php/buildER.php
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
require_once __DIR__ . '/../../../phpOMS/Autoloader.php';
|
||||
|
||||
use \phpOMS\Autoloader;
|
||||
|
||||
$module = 'Billing';
|
||||
if ($module === '..' || $module === '.'
|
||||
|| !\is_dir(__DIR__ . '/../../../Modules/' . $module)
|
||||
|| !\is_dir(__DIR__ . '/../../../Modules/' . $module . '/Models')
|
||||
|| !\is_file(__DIR__ . '/../../../Modules/' . $module . '/info.json'))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$mappers = \scandir(__DIR__ . '/../../../Modules/' . $module . '/Models');
|
||||
|
||||
echo "erDiagram\n";
|
||||
|
||||
$indent = 4;
|
||||
|
||||
foreach ($mappers as $mapper) {
|
||||
if (!\str_ends_with($mapper, 'Mapper.php')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$class = '\\Modules\\' . $module . '\\Models\\' . \substr($mapper, 0, -4);
|
||||
|
||||
if (!empty($class::MODEL)
|
||||
&& \is_file(__DIR__ . '/../../../Modules/' . $module . '/Models/' . \substr($class::MODEL, \strrpos($class::MODEL, '\\') + 1) . 'Mapper.php')
|
||||
&& \substr($class::MODEL, \strrpos($class::MODEL, '\\') + 1) !== \substr($mapper, 0, -10)
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
|
||||
echo \str_repeat(' ', $indent), \substr($mapper, 0, -10), " {\n";
|
||||
|
||||
foreach ($class::COLUMNS as $column => $data) {
|
||||
echo \str_repeat(' ', $indent + 4), $data['type'], ' ', $data['internal'] . "\n";
|
||||
}
|
||||
|
||||
foreach ($class::HAS_MANY as $name => $data) {
|
||||
echo \str_repeat(' ', $indent + 4), 'array ', $name . "\n";
|
||||
}
|
||||
|
||||
echo \str_repeat(' ', $indent), "}\n";
|
||||
|
||||
foreach ($class::BELONGS_TO as $name => $data) {
|
||||
$childMapper = \substr($data['mapper'], \strrpos($data['mapper'], '\\') + 1, -6);
|
||||
|
||||
echo \str_repeat(' ', $indent), \substr($mapper, 0, -10), ' }|--o| ', $childMapper, " : contains\n";
|
||||
}
|
||||
|
||||
foreach ($class::OWNS_ONE as $name => $data) {
|
||||
$childMapper = \substr($data['mapper'], \strrpos($data['mapper'], '\\') + 1, -6);
|
||||
|
||||
echo \str_repeat(' ', $indent), \substr($mapper, 0, -10), ' }|--o| ', $childMapper, " : contains\n";
|
||||
}
|
||||
|
||||
foreach ($class::HAS_MANY as $name => $data) {
|
||||
$childMapper = \substr($data['mapper'], \strrpos($data['mapper'], '\\') + 1, -6);
|
||||
|
||||
echo \str_repeat(' ', $indent), \substr($mapper, 0, -10), ' }|--|{ ', $childMapper, " : contains\n";
|
||||
}
|
||||
}
|
||||
|
|
@ -15,7 +15,7 @@ apt-get install git snapd ufw software-properties-common composer nodejs npm
|
|||
|
||||
# Security
|
||||
|
||||
apt-get install ufw
|
||||
apt-get install ufw libpam-google-authenticator
|
||||
ufw allow ssh
|
||||
ufw allow http
|
||||
ufw allow https
|
||||
|
|
@ -34,11 +34,15 @@ service fail2ban restart
|
|||
# change /etc/ssh/sshd_config PasswordAuthentication no
|
||||
# systemctl restart ssh
|
||||
|
||||
# google-authenticator
|
||||
# nano /etc/pam.d/sshd -> auth required pam_google_authenticator.so + comment out @include common-auth
|
||||
# naon /etc/ssh/sshd_config > ChallengeResponseAuthentication yes + KbdInteractiveAuthentication yes + AuthenticationMethods publickey,keyboard-interactive
|
||||
|
||||
###############################################################
|
||||
## Web
|
||||
###############################################################
|
||||
|
||||
apt-get install php8.2 php8.2-dev php8.2-cli php8.2-common php8.2-intl php8.2-mysql php8.2-pgsql php8.2-xdebug php8.2-opcache php8.2-pdo php8.2-sqlite php8.2-mbstring php8.2-curl php8.2-imap php8.2-bcmath php8.2-zip php8.2-dom php8.2-xml php8.2-phar php8.2-gd php-pear apache2 libapache2-mpm-itk apache2-utils mariadb-server mariadb-client wkhtmltopdf tesseract-ocr poppler-utils imagemagick
|
||||
apt-get install php8.3 php8.3-dev php8.3-cli php8.3-common php8.3-intl php8.3-mysql php8.3-pgsql php8.3-xdebug php8.3-opcache php8.3-pdo php8.3-sqlite php8.3-mbstring php8.3-curl php8.3-imap php8.3-bcmath php8.3-zip php8.3-dom php8.3-xml php8.3-phar php8.3-gd php-pear apache2 libapache2-mpm-itk apache2-utils mariadb-server mariadb-client wkhtmltopdf tesseract-ocr poppler-utils imagemagick
|
||||
|
||||
pecl install pcov
|
||||
#echo "extension=pcov.so" > /etc/php/cli/conf.d/20-xdebug.ini
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user