Errore durante la configurazione di mcrypt dopo l'aggiornamento a El Capitan

3

Sto affrontando il seguente problema dopo l'aggiornamento a El Capitan. Dice:

Installing shared extensions: /usr/lib/php/extensions/no-debug-non-zts-20121212/
cp: /usr/lib/php/extensions/no-debug-non-zts-20121212/#INST@826#: Operation not permitted

durante l'esecuzione di sudo make install nella cartella mcrypt / php-5.6.13 / ext / mcrypt. Penso che questo sia dovuto al SIP, ma a cosa serve il contrario.

Che cos'è SIP e come faccio a sapere se causa questo errore?

    
posta shivamkss 03.10.2015 - 08:00
fonte

4 risposte

2

Sì, questo è dovuto a SIP. Quindi le due opzioni che hai sono

  • disabilita SIP interamente
  • solleva una richiesta di difetto / supporto contro mcrypt per utilizzare /usr/local anziché /usr per l'installazione
risposta data 03.10.2015 - 08:22
fonte
6

Dopo aver letto la risposta di @ user980575 (che è un po 'ridondante con le directory) e un commento su La guida di Coolest's On The Planet su questo soggetto (che richiede la modifica manuale del tuo script ./configure ) Mi è venuta in mente una soluzione alternativa. Override del EXTENSION_DIR al volo.

Ci sono voluti un po 'di tentativi ed errori, ma quando sei pronto per eseguire l'installazione dopo la phpizing (è una parola?) basta semplicemente creare la directory:

mkdir -p /usr/local/lib/php/extensions

E poi lancia:

./configure

make

sudo make EXTENSION_DIR='/usr/local/lib/php/extensions' install

Ora che l'estensione è posizionata in una directory non protetta, devi solo aggiornare php.ini in modo che punti all'estensione con il percorso completo.

extension=/usr/local/lib/php/extensions/mcrypt.so
    
risposta data 02.05.2016 - 22:20
fonte
3

El Capitan aggiunge una nuova funzionalità di sicurezza denominata System Integrity Protection (SIP). Tra le altre cose, SIP impedisce ad altre parti oltre a Apple di aggiungere, eliminare o modificare directory e file memorizzati in determinate directory:

/bin
/sbin
/usr
/System

Apple ha indicato che le seguenti directory sono disponibili per gli sviluppatori per accedere:

/usr/local
/Applications
/Library
~/Library

Tutte le directory in /usr tranne /usr/local sono protette da SIP.

Per ulteriori informazioni su SIP, consulta questo post:

link

    
risposta data 06.10.2015 - 20:06
fonte
0

Non è necessario disabilitare la protezione dell'integrità del sistema per installare le estensioni php. Basta creare una directory adatta in / usr / local e usare la variabile INSTALL_ROOT. per esempio.

% mkdir -p /usr/local/php56_ext

e nella tua directory di estensione:

% INSTALL_ROOT=/usr/local/php56_ext make install

Dovrai attivare l'estensione utilizzando il percorso completo, quindi nel tuo php.ini, ti servirà la linea:

extension=/usr/local/php56_ext/usr/lib/php/extensions/no-debug-non-zts-20121212/mcrypt.so
    
risposta data 10.11.2015 - 02:16
fonte

Leggi altre domande sui tag