Is there a way I can compile or obfuscate the PHP code somehow so that it can still run on the server but cannot be viewed/edited/modified like compiled software?
No.
Affinché il codice possa essere eseguito sul server, la CPU deve capirlo. Le CPU sono molto, molto più stupide degli umani. Se la CPU riesce a capirlo, anche un umano può farlo. Se lo fai in modo che un essere umano non possa capire il codice, allora neanche una CPU può farlo e non puoi più eseguirlo.
A proposito: tutte le implementazioni PHP attualmente esistenti (Zend Engine, HVVM, P8, Quercus, Phalanger, Peachpie, HippyVM, Tagua VM, JPHP, ...) compileranno effettivamente il codice PHP.
Or is the only technical option to switch to a compiled programming language like Java?
No.
Non fa differenza. Il codice deve essere sul server in una forma che il server possa capirlo. Ma poi anche un umano può capirlo.
La soluzione solo possibile per assicurarti che qualcuno non possa accedere al tuo codice è ... non concedere loro l'accesso al tuo codice. È davvero così semplice.
Il modo più semplice per raggiungere questo obiettivo è quello di mantenere il codice nei propri locali e di offrire l'accesso solo tramite un servizio strettamente controllato. Ad esempio, Google mantiene il suo codice segreto.
Un modo molto, molto, molto più difficile e più costoso è quello di avere una crittografia completa end-to-end del codice. In sostanza, si consegna il server come una scatola nera impenetrabile a prova di manomissione che consente l'accesso solo attraverso un servizio strettamente controllato. Il trucco qui è assicurarsi che la black box resti "black". Ciò richiede il pieno controllo del sistema operativo, di tutte le librerie, della CPU, della scheda madre, della RAM, di tutti i bus e dei chip I / O nel sistema e così via.
Ricorda la XBox? Microsoft ha trasmesso la chiave di crittografia master dal modulo di crittografia alla CPU tramite un bus non crittografato. Pensavano che questo sarebbe andato bene perché non esiste hardware in grado di snoopare un bus così veloce. Bene, si scopre che se hai un oscilloscopio da 10000000 $ e molto tempo a disposizione, puoi realmente spiare quel bus e, come succede, il MIT ha inventato un oscilloscopio del genere, gli studenti del MIT hanno hanno un sacco di tempo a disposizione, sono addestrati alla crittanalisi e a loro piace eseguire Linux su tutto, quindi hanno creato un installer Linux per XBox, che a sua volta è stato ideato da cracker per creare programmi di installazione per giochi piratati.
A proposito: non esiste un "linguaggio di programmazione compilato". La compilazione o l'interpretazione sono tratti del compilatore o interprete (duh!), Non della lingua. Vivono su livelli completamente diversi di astrazione. Se l'inglese fosse una lingua tipizzata, il termine "linguaggio di programmazione compilato" sarebbe un errore di tipo. Ogni lingua può essere implementata con un compilatore e ogni lingua può essere implementata con un interprete. Ad esempio, tutte le implementazioni di PHP, JavaScript, Python e Ruby attualmente esistenti hanno compilatori. Al contrario, ci sono interpreti per C, C ++ e Haskell.