Phpschool.io
🌍 PHP School Website http://www.phpschool.io/
Install / Use
/learn @php-school/Phpschool.ioREADME
Install
You will need composer, node and docker.
npm install
npm run build
cp .env.dist .env
docker-compose build
Run
docker-compose up -d
docker compose exec php composer install
Create DB Scheme
docker compose exec php composer app:db:update
Import DB
docker-compose exec -T db mysql -uroot phpschool -proot < phpschool.sql
Generate Blog
docker compose exec php composer app:gen:blog
Then navigate to http://localhost !
Build CSS & JS
This needs to be done for the main website (non cloud) to run in development mode.
npm run build
Building CSS & JS for cloud dev
The cloud styles and JS are built using vite.js and therefore has a dev/watcher mode with hot/live reloading.
Run:
npm run dev
You will also need to symlink the image directory:
ln -s ../../assets/img/cloud public/img/cloud
For GitHub login
Add 127.0.0.1 www.phpschool.local to /etc/hosts
Create a GitHub oauth App:
Application Name: PHP School Local Homepage: http://www.phpschool.local Authorization Callback URL: http://www.phpschool.local/student-login:
Take the client secret and client ID and place them in your .env file under the keys: GITHUB_CLIENT_ID & GITHUB_CLIENT_SECRET.
View cache keys
docker-compose exec redis redis-cli keys '*'
Clear cache
docker-compose exec php composer app:cc
Deploy
You will need capistrano installed and SSH access to the production server.
cap production deploy
Production deploy requisites
Letsencrypt certs should be setup and located in /etc/letsencrypt
Make sure .env file exists in shared folder. You can use env.dist as an example.
Related Skills
node-connect
350.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
350.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
350.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
