2009-07-21 10 views

risposta

9

Per lo più, ma si dispone di un paio di cose da guardare fuori:

  • Sotto * nix sistemi nomi di percorso tra maiuscole e minuscole, non sotto Windows.
  • In sistemi * nix, il separatore del percorso è /. Sotto Windows è \, ma PHP traduce automaticamente /. Utilizzare la costante DIRECTORY_SEPARATOR o utilizzare sempre /.
  • In sistemi * nix, lo schema di attraversamento del percorso è diverso. Non esiste una lettera di unità. Ci sono invece punti di mount.
  • In sistemi * nix, le autorizzazioni per i file sono più rigide rispetto a Windows per impostazione predefinita.
  • Alcune funzioni non sono disponibili in Windows o si comportano diversamente. Questi sono principalmente per le funzioni di basso livello (stato della memoria, stato del sistema). Fare riferimento alla documentazione di PHP.
  • Se si utilizza exec() o qualsiasi altra funzione simile, i comandi non saranno gli stessi. Fare riferimento alla documentazione del sistema.

su Apache:

si potrebbe colpire alcuni strappi ad un certo punto in un unico server utilizza PHP come un modulo e l'altro si usa via fcgi. Due Apache configurati allo stesso modo si comportano allo stesso modo.

+0

E ci sono anche funzioni disponibili in win32 ma non * nix, ad es. il modulo com/.net. – VolkerK

+0

Inoltre, la presenza di variabili $ _SERVER può variare a seconda che PHP stia eseguendo su Apache, il che tende a essere ciò che nix utilizza come server HTTP e Internet Information Services (IIS), che Windows tende ad avere come server HTTP. – joebert

0

Non dovrebbe importare dato che PHP è solo una lingua. Dovrebbe essere lo stesso ovunque tu vada.

0

Sì ... L'impostazione potrebbe essere leggermente diversa ma il suo utilizzo è lo stesso di un linguaggio con script.

2

Finché non si utilizzano i comandi di sistema exec o non si utilizzano percorsi di file non validi, la maggior parte delle cose non dovrebbe comportare alcun problema. Ho usato PHP per un po 'di tempo, sviluppando su una macchina Windows e poi spostandolo su una macchina Linux, e non riesco a pensare a nulla di cui abbia avuto problemi.

1

La risposta corretta è: "dipende".

Per la maggior parte PHP funzionerà allo stesso modo su qualsiasi sistema operativo. Ci sono un bel po 'di avvertimenti, in genere ci sono funzioni che semplicemente non funzionano su Windows. (ad esempio, getrusage()). Trovare le librerie di Windows per PHP è anche piuttosto difficile a volte, dal momento della morte di pecl4win (un sito che contiene le compilation di Windows di tutte le librerie PECL). Questo rende l'aggiunta di cose come APC (Alternative PHP Cache) piuttosto complicata.

Detto questo, il manuale PHP è ben documentato per quanto riguarda ciò che non funziona su Windows.

+0

Non ho usato molte librerie PECL, ma non ho avuto problemi a trovare quelli necessari per Windows. Anche se, come ho detto, la mia esperienza con PECL è limitata. –

+0

Sì, è incostante. Da quando http://pecl4win.php.net/ è andato giù. È stato meh. Il mio collaboratore usa Win e deve cercare su google per trovare le DLL per molte delle librerie, e spero che siano compilate per la sua versione di PHP. – hobodave

+0

Sembra che pecl4win non sia giù e fuori però. Ma non so da quanto tempo "preparano un nuovo sistema di costruzione". –

3

ho intenzione di celebrare questo come wiki comunità, come sto semplicemente copiando e incollando la mia risposta da un altro very similar thread:

Quasi, ma non del tutto. Ci sono un paio di cose a cui devi fare attenzione.

1) Nome file: Windows è un sistema operativo senza distinzione tra maiuscole e minuscole. Se si crea un file Foo.php, puoi includerlo usando include('Foo.php') O include('foo.php'). Quando sposti il ​​progetto su Linux/Unix, questo si interromperà se non hai il caso giusto.

2) Ci sono alcune differenze di piattaforma specifiche della lingua, in genere quando si tratta di qualcosa che si basa sulla funzionalità del sistema operativo integrato. Questi capitano raramente, ma potresti incontrarli di tanto in tanto. Ad esempio, la funzione checkdnsrr() non esisteva in Windows PHP fino alla versione 5.3.0.

3) Installazioni. I pacchetti PHP che ottieni per Linux/Unix possono essere ampiamente utilizzati in ciò che includono in un'installazione predefinita rispetto a Windows. Devi assicurarti di testare la tua app su una casella di sviluppo della piattaforma opposta solo per essere sicuro di avere tutte le librerie richieste compilate/aggiunte, o otterrai alcuni errori fatali da un'app dall'aspetto normale.

0

Ci sono alcune differenze, come altri utenti hanno notato (non le ripeterò, ci sono già ottime risposte, il punto più fastidioso è case-insensivity nei nomi dei file sotto windows, IMHO), quindi se sei usando un server Linux per distribuire il tuo sito in produzione, potrebbe essere utile testarlo su Linux una volta ogni tanto.

Se non si desidera installare Linux sul computer e disporre di un computer sufficientemente potente (almeno 2 core e 2 GB di RAM, direi), è possibile utilizzare una macchina virtuale, con uno di quei software (entrambi sono liberi):

Sarà anche aiutare a imparare alcune nozioni di base su Linux - il che non è una brutta cosa per sapere se si sta progettando fare lo sviluppo PHP professionalmente, come Linux è lontano m utilizzato più di Windows, quando si tratta di server Web PHP.

Problemi correlati