import { useEffect, useState } from 'react' import { Cpu, CheckCircle, XCircle, RefreshCw } from 'lucide-react' import { api } from '../api/client' interface PhpVersion { version: string; installed: boolean; active: boolean } interface AccountPhp { id: number; username: string; domain: string; package: { phpVersion: string } | null } export default function PHP() { const [versions, setVersions] = useState([]) const [accounts, setAccounts] = useState([]) const [loading, setLoading] = useState(false) const fetch = async () => { setLoading(true) try { const [v, a] = await Promise.all([api.get('/nixserver/php/versions'), api.get('/nixserver/php/accounts')]) setVersions(v.data.data) setAccounts(a.data.data) } finally { setLoading(false) } } useEffect(() => { fetch() }, []) const changeVersion = async (accountId: number, phpVersion: string) => { try { await api.put(`/nixserver/php/accounts/${accountId}`, { phpVersion }) fetch() } catch (err: unknown) { alert((err as { response?: { data?: { error?: string } } })?.response?.data?.error ?? 'Failed') } } return (

PHP

Manage PHP versions per account

{/* Installed versions */}
{versions.map(v => (
PHP {v.version} {v.installed ? : }
))}
{/* Account PHP versions */}

Account PHP Versions

{['Account', 'Domain', 'PHP Version', 'Change'].map(h => )} {accounts.map(a => ( ))} {!loading && accounts.length === 0 && }
{h}
{a.username} {a.domain} PHP {a.package?.phpVersion ?? '8.3'}
No accounts
) }