psolom / richfilemanager-php Goto Github PK
View Code? Open in Web Editor NEWPHP connector for RichFilemanager
PHP connector for RichFilemanager
Refer to the issue psolom/RichFilemanager#271 of main RFM repository.
Hi,
I am trying to configure RichFilemanager with Amazon S3 but i cannot achieve to upload files.
I am using this configuration :
$config_s3 = [
'images' => [
'thumbnail' => [
'dir' => 's3_thumbs',
'useLocalStorage' => true,
],
],
'credentials' => [
'region' => 'eu-west-3',
'bucket' => 'xxxx',
'endpoint' => null,
'credentials' => [
'key' => 'xxx',
'secret' => 'xxx',
],
'options' => [
'use_path_style_endpoint' => false,
],
'defaultAcl' => \RFM\Repository\S3\StorageHelper::ACL_PUBLIC_READ,
'debug' => false,
],
];
$app = new \RFM\Application();
$s3 = new \RFM\Repository\S3\Storage($config_s3);
$s3->setRoot('websites', true);
$app->setStorage($s3);
$app->api = new RFM\Api\AwsS3Api();
$local = new \RFM\Repository\Local\Storage();
$app->setStorage($local);
$app->run();
bucket, key and secret are working, I can use them to connect with software like Cyberduck
Richfilemanager is working : I can display directories, view existing files and I can create folders but I can't upload new files.
In filemanager.log I only have this error :
Error code: File upload aborted, meta: {"arguments":[]}
Refer to the issue psolom/RichFilemanager#299 of main RFM repository.
On any configuration I cant get it to set ACL to public on AWS S3 Connector...any secret I am missing?
When deleting a file, I get php errors relating to lines 211 and 376 in \connectors\php\vendor\servocoder\richfilemanager-php\src\Repository\Local\ItemModel.php.
It seems the code is trying to retrieve mime properties and date properties of the deleted file. As I'm not a php expert, I've wrapped the lines with a if ( $this->isExists ) {}, which seems to do the trick.
It would be nice if we could add absolute paths (Outside of the webroot) for thumbnails. Using ..
in images.thumbnail.dir
doesn't work apparently
There a possibility to describe where the connector needs to be copied to within RichFilemanager to make it work? Documentation is quite vague and not everyone uses composer and need simple copy/paste methods to install. Thanks
Hello guys,
I found an issue where we cannot upload files on S3 because the S3 bucket has enforced the AES256 encryption (the bucket denies uploads without this)
See http://s3tools.org/kb/item11.htm for full bucket policy
I digged a bit, and it appears (but I may be wrong) that we should have a new option there:
https://github.com/servocoder/RichFilemanager-PHP/blob/master/src/Repository/S3/UploadHandler.php
around lines 273 and 285
Adding the following so for multi part and non-multi part
'ServerSideEncryption' => 'AES256',
You can find docu here: http://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putobject
Even better to make it optionnal via the config file
https://github.com/servocoder/RichFilemanager-PHP/blob/master/src/config/config.s3.php
local.ERROR: ReflectionException: Class log does not exist in /Applications/MAMP/htdocs/s3tree/vendor/laravel/framework/src/Illuminate/Container/Container.php:734
Stack trace:
#0 /Applications/MAMP/htdocs/s3tree/vendor/laravel/framework/src/Illuminate/Container/Container.php(734): ReflectionClass->__construct('log')
#1 /Applications/MAMP/htdocs/s3tree/vendor/laravel/framework/src/Illuminate/Container/Container.php(629): Illuminate\Container\Container->build('log', Array)
#2 /Applications/MAMP/htdocs/s3tree/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(105): Illuminate\Container\Container->make('log', Array)
#3 **/Applications/MAMP/htdocs/s3tree/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(471): app('log')**
**#4 /Applications/MAMP/htdocs/s3tree/app/filemanager/vendor/servocoder/richfilemanager-php/src/Facade/Log.php(13): logger()**
#5 /Applications/MAMP/htdocs/s3tree/app/filemanager/vendor/servocoder/richfilemanager-php/src/Repository/Local/Storage.php(93): RFM\Facade\Log::info('$this->storageR...')
#6 /Applications/MAMP/htdocs/s3tree/app/filemanager/vendor/servocoder/richfilemanager-php/src/Repository/Local/Storage.php(62): RFM\Repository\Local\Storage->setDefaults()
#7 /Applications/MAMP/htdocs/s3tree/app/Http/Controllers/S3Controller.php(26): RFM\Repository\Local\Storage->__construct(Array)
#8 [internal function]: App\Http\Controllers\S3Controller->s3file()
#9 /Applications/MAMP/htdocs/s3tree/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(80): call_user_func_array(Array, Array)
#10 /Applications/MAMP/htdocs/s3tree/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(146): Illuminate\Routing\Controller->callAction('s3file', Array)
#11 /Applications/MAMP/htdocs/s3tree/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(94): Illuminate\Routing\ControllerDispatcher->call(Object(App\Http\Controllers\S3Controller), Object(Illuminate\Routing\Route), 's3file')
#12 [internal function]: Illuminate\Routing\ControllerDispatcher->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#13 /Applications/MAMP/htdocs/s3tree/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(52): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#14 [internal function]: Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
Refer to the issue psolom/RichFilemanager#297 of main RFM repository.
getFileSize()
method to calculate size of files that specific for this particular storage.In addition to the thread:
getMimeType()
method to define mime type of a file.Missed return
statement in the RFM\Repository\Local::remove()
method
Refer to the issue psolom/RichFilemanager#112 of main RFM repository.
Hello,
According to the main RichFileManager repository's wiki, you can pass the 'type' parameter to the initialisation of the plugin to restrict the view of certain files, for instance, to images.
I saw that the js plugin just send that parameter to the connector in order for it to list only the desired files (I guess). This is not working for me and I can't find anywhere in the PHP connector where this parameter is being used. Is it implemented yet?.
Moreover, wouldn't be the idea that this parameter also restrict which files can you upload?
Best,
Ignacio
PHP connector fails on every rename operation of Local storage. Bug in the latest version 1.1.0
Hi, thanks for the effort to create this library.
Just found this library out. Is it possible to connect this library to a webDAV client?
Is it officially supported or a connecter should be written?
Any hint/help is appreciated.
Refer to the issue psolom/RichFilemanager#266 of main RFM repository.
Wrong download target model. Should be fixed.
When a file is uploaded on a S3 bucket, the function :function prefixes a slash in front of the filename, which prevents proper resource deletion.
Looks like the ItemModel
refactor adds an unecessary slash in front of the Delete command, which produces a command equivalent to (double slash)
swisscat@swisscat:~$ aws s3 rm s3://<bucket>//var/file.pdf
fatal error: An error occurred (404) when calling the HeadObject operation: Key "/var/file.pdf" does not exist
Commit swisscat@912f2fa fixes the issue, however, I suspect it might not be generic enough.
I added my credentials to config.s3.php
and I changed the filemanager.php
to be like this:
//$config = [];
$config = require(__DIR__ . '/vendor/servocoder/richfilemanager-php/src/config/config.s3.php');
$s3 = new \RFM\Repository\S3\Storage($config);
Apache gives this:
[Wed May 31 23:15:49.362731 2017] [:error] [pid 24639] [client 162.158.2.125:26562] PHP Fatal error: Uncaught exception 'Exception' with message 'Storage with name "local" is not set.' in /.../connectors/php/vendor/servocoder/richfilemanager-php/src/Application.php:90
Stack trace:
#0 /.../connectors/php/vendor/servocoder/richfilemanager-php/src/Api/LocalApi.php(21): RFM\\Application->getStorage('local')
#1 /.../connectors/php/filemanager.php(114): RFM\\Api\\LocalApi->__construct()
#2 {main} thrown in /.../connectors/php/vendor/servocoder/richfilemanager-php/src/Application.php on line 90
Have I missed something?
When you rename a file, it loses its ACL settings. If you have defaultAcl set to ACL_PUBLIC_READ, the file first gets uploaded with that setting but then when you rename it, that gets set to private [so the preview urls are then broken]. I haven't found a workaround for this yet, but I think it may involve changing StorageHelper.php so that instead of standard php 'rename' it should do an S3 copy + delete?
Say I have this folder structure
files
│
└─── shared
│
└───users
│
└───1 (user 1's root folder)
└─── shared -> ../../shared
└───2 (user 2's root folder)
└─── shared -> ../../shared
└─── etc
Trying to traverse the symlink from a users root directory will return the error The directory /shared/ does not exist.
This error occurs in ItemModel::isValidPath(). The function uses the storage root, being /files/users/:id in this example, and the realpath of the folder is /files/shared, resulting in the $rpSubstr variable not matching $rpFiles.
What I want to do can be done client side, setting the storage root folder to /files/, and using the query parameter exclusiveFolder=/users/1/ will show the filemanager the way I intended and symlinks will work outside of the exclusive folder. However there seems to be no current way to set a exclusiveFolder from serverside.
I'm not sure what would be the most efficient way to fix this, currently to solve this for my project I have the ItemModel::isValidPath() function to use /files/ as rootPath. It'd be great if it was possible to configure a exclusiveFolder from server side.
Refer to the issue psolom/RichFilemanager#270 of main RFM repository.
Hello,
We are currently facing an issue when trying to move an element from a folder to another using S3 + AES-256 Encryption on AWS.
The origin element is deleted, but is not created on the destination folder.
Encryption on folder performed using the following policy:
{
"Version": "2012-10-17",
"Id": "PutObjPolicy",
"Statement": [
{
"Sid": "DenyIncorrectEncryptionHeader",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::s3-local-test/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "AES256"
}
}
},
{
"Sid": "DenyUnEncryptedObjectUploads",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::s3-local-test/*",
"Condition": {
"Null": {
"s3:x-amz-server-side-encryption": "true"
}
}
}
]
}
I have been used before 2.6 ver
when i update richfilemanager by composer to 2.7.1 an error occurred.
{"errors":[{"id":"server","code":"500","title":"INVALID_ACTION","meta":{"arguments":[]}}]}
my code:
$config = [
'security' => [
'extensions' => [
'policy' => 'ALLOW_LIST',
'restrictions' => [
'jpg',
'jpe',
'jpeg',
'gif',
'zip',
'pdf',
'rar',
'mp4',
'mp3',
'svg',
'css',
'js',
'doc',
'docx',
'ppt',
'xsl',
'csv',
'txt',
'png',
],
],
],
];
$app = new \RFM\Application();
$local = new \RFM\Repository\Local\Storage($config);
// example to setup files root folder
$local->setRoot('./uploads', true, true);
$app->setStorage($local);
// set application API
$app->api = new \RFM\Api\LocalApi();
$app->run();
what happens?
I would like to add some info about FMRFMBundle
to both RichFilemanager-php and RichFilemanager wikis.
Issue:
PDF viewer - ViewerJS - performs a HEAD request to the "readfile" API action right before performing a GET request. This fails because application allows only GET requests fir the "readfile" API action.
Solution
Allow HEAD requests for "readfile" API action.
I am again having trouble setting up this connector on my shared ISP website (Godaddy). I am using Windows server (IIS) and I get the message that it is unable to initialize the server.
I am succeeding in setting up on my local IIS server. I did, however, install composer on my local machine so I think the problem might be that the remote server might not recognize the composer package manager.
Why is it so complicated to set up a simple php connector? It now relies on a separate repository and it must be installed using composer? Why not just have the code for the php connector contained within the filemanager repository?
Just a note that I tried the ASHX connector but there is no documentation on how to set the root directory in that connector. It now goes to the root directory of the application and I haven't figured out how to change it to the directory that contains the uploaded filemanager server files. Some documentation on this would be very helpful. I am not an experienced C# programmer so I tried to convert this connector to Visual Basic but, so far, it isn't working.
Could you please provide a full PHP connector example with the appropriate config so that I can install it on my remote server (hopefully without multiple dependencies on a package manager)?
Refer to the issue psolom/RichFilemanager#236 of main RFM repository.
Problem:
"_thumbs" folder is hardcoded to be excluded in the config.local.php
configuration file, but if you change its name it will appear in the output.
Solution:
Exclude a value of images.thumbnail.dir
configuration option instead of hardcoded "_thumbs" value.
Hi sir,
Can i change the domain from the image url (www.xxx.com/image/to/be/uploaded) xxx.com to yyy.com when i click on the copy URL action ?
I'm trying to use RichFilemanager-PHP S3 storage with Minio server but I'm not sure how to configure the endpoint.
Using this instructions: https://github.com/minio/cookbook/blob/master/docs/aws-sdk-for-php-with-minio.md
I've tried something like:
$config_s3 = [
'images' => [
'thumbnail' => [
'dir' => 's3_thumbs',
'useLocalStorage' => true,
],
],
'credentials' => [
'region' => 'your region',
'bucket' => 'your aws s3 bucket',
'endpoint' => 'http://localhost:9000',
'use_path_style_endpoint' => true,
'credentials' => [
'key' => 'your aws s3 key',
'secret' => 'your aws s3 secret',
],
'defaultAcl' => \RFM\Repository\S3\StorageHelper::ACL_PUBLIC_READ,
'debug' => false,
],
];
But without success.
How to configure filemanager.php so that it passes to the AWS library the endpoint and other additional parameters I want to use instead of Amazon defaults?
Thanks
Hi,
My filemanager never loads it just gets stuck on loading screen in network I see this URL:
{domain}/filemanager/connectors/php/filemanager.php?time=1503650423626&mode=initiate&_=1503650423241
in RouteCollection.php (line 179)
Any ideas? @servocoder
Thanks.
Problem:
An item is removed from UI even if delete operation failed.
Solution:
Throw an appropriate error if delete operation failed.
Refer to the issue psolom/RichFilemanager#210 of main RFM repository.
The "download" API method workflow was quite confusing, for example see the issue psolom/RichFilemanager#248 of main RFM repository. It should be simplified and become rather straightforward.
Attempting to upload an image causes the following issues:
Similar to issue #18, a directory for thumbnails is attempted to be created. Again fixed on my side using swisscat@f4944f7, but I think this definitely needs a broader approach ;)
Post that, I get the two following issues:
[25-Oct-2017 15:10:52 Europe/Berlin] PHP Warning: Error executing "PutObject" on "https://<bucket>.s3-eu-west-1.amazonaws.com/var/06e741ad-5ed3-4022-ac7d-e4dd2cd8bccd.jpg"; AWS HTTP error: Client error: `PUT https://<bucket>.s3-eu-west-1.amazonaws.com/var/06e741ad-5ed3-4022-ac7d-e4dd2cd8bccd.jpg` resulted in a `403 Forbidden` response:
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>F66E86 (truncated...)
AccessDenied (client): Access Denied - <?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>F66E86D8BC0AD339</RequestId><HostId>63rOdlyHgx+hxfEUB8wV1CxToc37s1N0cGQUA9aRPOtdoEtQITE3fhYbbprObVV3OdZ0PpvakUQ=</HostId></Error> in /var/www/html/vendor/aws/aws-sdk-php/src/S3/StreamWrapper.php on line 738
[25-Oct-2017 15:10:52 Europe/Berlin] PHP Stack trace:
[25-Oct-2017 15:10:52 Europe/Berlin] PHP 1. {main}() /var/www/html/vendor/servocoder/richfilemanager/connectors/php/filemanager.php:0
[25-Oct-2017 15:10:52 Europe/Berlin] PHP 2. RFM\Application->run() /var/www/html/vendor/servocoder/richfilemanager/connectors/php/filemanager.php:70
[25-Oct-2017 15:10:52 Europe/Berlin] PHP 3. RFM\Api\AwsS3Api->actionUpload() /var/www/html/vendor/servocoder/richfilemanager-php/src/Application.php:314
[25-Oct-2017 15:10:52 Europe/Berlin] PHP 4. RFM\Repository\S3\UploadHandler->post($print_response = *uninitialized*) /var/www/html/vendor/servocoder/richfilemanager-php/src/Api/AwsS3Api.php:133
[25-Oct-2017 15:10:52 Europe/Berlin] PHP 5. RFM\Repository\S3\UploadHandler->handle_file_upload($uploaded_file = *uninitialized*, $name = *uninitialized*, $size = *uninitialized*, $type = *uninitialized*, $error = *uninitialized*, $index = *uninitialized*, $content_range = *uninitialized*) /var/www/html/vendor/servocoder/richfilemanager-php/src/Repository/BaseUploadHandler.php:1449
[25-Oct-2017 15:10:52 Europe/Berlin] PHP 6. RFM\Repository\S3\UploadHandler->handle_image_file($file = *uninitialized*) /var/www/html/vendor/servocoder/richfilemanager-php/src/Repository/S3/UploadHandler.php:279
[25-Oct-2017 15:10:52 Europe/Berlin] PHP 7. RFM\Repository\S3\UploadHandler->create_scaled_image($file = *uninitialized*, $version = *uninitialized*, $options = *uninitialized*) /var/www/html/vendor/servocoder/richfilemanager-php/src/Repository/BaseUploadHandler.php:1074
[25-Oct-2017 15:10:52 Europe/Berlin] PHP 8. RFM\Repository\S3\UploadHandler->gd_create_scaled_image($file = *uninitialized*, $version = *uninitialized*, $options = *uninitialized*) /var/www/html/vendor/servocoder/richfilemanager-php/src/Repository/BaseUploadHandler.php:1039
[25-Oct-2017 15:10:52 Europe/Berlin] PHP 9. imagejpeg(*uninitialized*, *uninitialized*, *uninitialized*) /var/www/html/vendor/servocoder/richfilemanager-php/src/Repository/BaseUploadHandler.php:811
[25-Oct-2017 15:10:52 Europe/Berlin] PHP 10. Aws\S3\StreamWrapper->stream_flush() /var/www/html/vendor/servocoder/richfilemanager-php/src/Repository/BaseUploadHandler.php:811
[25-Oct-2017 15:10:52 Europe/Berlin] PHP 11. Aws\S3\StreamWrapper->boolCall($fn = *uninitialized*, $flags = *uninitialized*) /var/www/html/vendor/aws/aws-sdk-php/src/S3/StreamWrapper.php:180
[25-Oct-2017 15:10:52 Europe/Berlin] PHP 12. Aws\S3\StreamWrapper->triggerError($errors = *uninitialized*, $flags = *uninitialized*) /var/www/html/vendor/aws/aws-sdk-php/src/S3/StreamWrapper.php:912
[25-Oct-2017 15:10:52 Europe/Berlin] PHP 13. trigger_error(*uninitialized*, *uninitialized*) /var/www/html/vendor/aws/aws-sdk-php/src/S3/StreamWrapper.php:738
[25-Oct-2017 15:10:52 Europe/Berlin] PHP Fatal error: Uncaught InvalidArgumentException: Found 1 error while validating the input provided for the PutObject operation:
[Key] is missing and is a required parameter in /var/www/html/vendor/aws/aws-sdk-php/src/Api/Validator.php:65
Stack trace:
#0 /var/www/html/vendor/aws/aws-sdk-php/src/Middleware.php(79): Aws\Api\Validator->validate('PutObject', Object(Aws\Api\StructureShape), Array)
#1 /var/www/html/vendor/aws/aws-sdk-php/src/S3/S3Client.php(421): Aws\Middleware::Aws\{closure}(Object(Aws\Command), NULL)
#2 /var/www/html/vendor/aws/aws-sdk-php/src/S3/S3Client.php(444): Aws\S3\S3Client::Aws\S3\{closure}(Object(Aws\Command), NULL)
#3 /var/www/html/vendor/aws/aws-sdk-php/src/S3/S3Client.php(378): Aws\S3\S3Client::Aws\S3\{closure}(Object(Aws\Command), NULL)
#4 /var/www/html/vendor/aws/aws-sdk-php/src/S3/S3Client.php(397): Aws\S3\S3Client::Aws\S3\{closure}(Object(Aws\Command), NULL)
#5 /var/www/html/vendor/aws/aws-sdk-php/src/Middleware.php(55): Aws\S3\S3Client::Aws\S3\{closure}(Object(Aws\Command), NULL)
#6 /var/www/ht in /var/www/html/vendor/aws/aws-sdk-php/src/Api/Validator.php on line 65
Refer to the issue simogeo/Filemanager#540 of simogeo Filemanager repository.
Hi, I have a problem uploading a 2gb file. RFM response is "MODE-ERROR", I search in code and found the error in Application.php file in line 271. The problem is in this line 268: "$mode = request()->get('mode');" the request doesn't have a value in var mode. This only happens when is a big file, with a small file everything works ok. Any idea?
Thank you.
When I click "Download" button in the file manager, I get a corrupted image due to PHP (7.3.5 on Windows) error:
Notice: ob_flush(): failed to flush buffer. No buffer to flush in C:\my\path\vendor\servocoder\richfilemanager-php\src\Repository\Local\Storage.php on line 463
Code is:
ob_flush();
Should it be changed to something like the follows?
if (ob_get_length())
ob_flush();
By default the $relativeToDocumentRoot
parameter of setRoot()
method was set to false
boolean value.
Thus when you define your storage folder as relative path via setRoot()
method and doesn't set $relativeToDocumentRoot
explicitly to true
the workflow leveraged default false
value and cleaned up your document root folder.
Hi, when I did a upload file in local storage, the FM gived me an error message "ERROR_UPLOAD", so I investigated and I founded in Class "BaseUploadHandler" in function "get_upload_data($id)" the var $id is "upload" on upload action, but the function always return the info in @$_FILE[$id] and this array @$_FILE only have the key 'files' where is the file info what I need upload. I did a ugly change in the code for get the info in 'files' when $id is 'upload'. But I think there is a better solution for this bug.
I am able to connect to S3 without issue, but no matter the config I use it will not generate an S3 URL it always uses the connector. Is there an example that shows proper setup to generate AWS S3 URL's?
I have a dir with several image files.
I set up RichFilemanager to use this dir as the user storage folder .
I set up RichFilemanager to use thumbnails.
When i run RichFilemanager all images previews are broken images and I see this errors on the PHP Log
[19-Feb-2019 13:31:56 GMT] PHP User Notice - /xxx/tinyMCE_upload/_thumbs/Screenshot_20180608_084612.png, /xxx/composer/vendor/servocoder/richfilemanager-php/src/Repository/Local/ItemModel.php, 689
Uri: /adm/js/RichFilemanager-2.7.6/connectors/php/filemanager.php?path=%2FScreenshot_20180608_084612.png&mode=getimage&thumbnail=true&time=1550583115886
Ip: 127.0.0.1
#0 [internal function]: {closure}(1024, '/xxx...', '/xxx...', 689, Array)
#1 /xxx/composer/vendor/servocoder/richfilemanager-php/src/Repository/Local/ItemModel.php(689): trigger_error('/xxx...')
#2 /xxx/composer/vendor/servocoder/richfilemanager-php/src/Api/LocalApi.php(567): RFM\Repository\Local\ItemModel->checkReadPermission()
#3 /xxx/composer/vendor/servocoder/richfilemanager-php/src/Application.php(338): RFM\Api\LocalApi->actionGetImage(true)
#4 /xxx/adm/js/RichFilemanager-2.7.6/connectors/php/filemanager.php(132): RFM\Application->run()
#5 {main}
The problem gets fixed if I upload through RichFilemanager a new image or if I manually create the dir _thumbs
.
Refer to the issue psolom/RichFilemanager#334 of main RFM repository.
The Packagist page:
https://packagist.org/packages/servocoder/richfilemanager-php
declares the minimum PHP version for RichFilemanager-PHP to be 5.4.0.
However, illuminate/config 5.2 is set to be a requirement, which requires the minimum PHP version of 5.5.9.
As a consequence, RichFilemanager-PHP cannot be installed on a system with only PHP 5.4.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.