2014-04-18 12 views
8

Ho questa configurazione in un debian: apache 2.4 proxy_fcgi e php-fpm (v5.5). Nel mio file virtualhost ho:apache2.4 + php-fpm + phpmyadmin in debian

<VirtualHost *:80> 
DocumentRoot /var/www/html 
ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/var/run/php5-fpm.sock|fcgi://./var/www/html 
CustomLog ${APACHE_LOG_DIR}/access.log combined 
ErrorLog ${APACHE_LOG_DIR}/error.log 
</VirtualHost> 

e tutto funziona bene, posso vedere phpinfo() e ogni file php Chiedo in/var/www/html /.

Continuo con l'installazione phpmyadmin dalla repo debian, ma quando navigo a http://MY.IP/phpmyadmin ottengo un errore "File non trovato" e nel log degli errori di Apache

"[proxy_fcgi:error] AH01071: Got error 'Primary script unknown\n'" 

pacchetto phpMyAdmin Debian discariche il contenuto in/usr/share/phpmyadmin. Se creo un file test.html in/usr/share/phpmyadmin posso vedere il suo contenuto da http://MY.IP/phpmyadmin/test.html

Il problema è che i file php in/usr/share/phpmyadmin non vengono elaborati. La configurazione di apache phpmyadmin è la seguente:

# phpMyAdmin default Apache configuration 

Alias /phpmyadmin /usr/share/phpmyadmin 

<Directory /usr/share/phpmyadmin> 
     Options FollowSymLinks 
     DirectoryIndex index.php 

     <IfModule mod_php5.c> 
       AddType application/x-httpd-php .php 
       <FilesMatch ".+\.php$"> 
        SetHandler application/x-httpd-php 
       </FilesMatch> 

       php_flag magic_quotes_gpc Off 
       php_flag track_vars On 
       php_flag register_globals Off 
       php_admin_flag allow_url_fopen Off 
       php_value include_path . 
       php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp 
       php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/ 
     </IfModule> 

</Directory> 
... 

ed è caricato nel file di configurazione di apache.

Dato che non è installato mod_php, non c'è elaborazione per i file php. Come posso dire a apache di usare proxy_fcgi per elaborare i file php nella directory/usr/share/phpmyadmin?

>> aggiornare < < ho aggiunto una direttiva proxypassmatch in conf phpMyAdmin di apache

ProxyPassMatch ^/phpmyadmin/(.*\.php(/.*)?)$ unix:/var/run/php5-fpm.sock|fcgi:///usr/share/phpmyadmin/ 

aspettandosi di lavorare, ma continuo a ricevere lo stesso errore.

>> aggiornare 2 < < ho sostituito la presa unix php-fpm con la rete (127,1: 9000) e sostituito ProxyPassmatch del file virthualhost con:

ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1 

ed in conf apache di phpMyAdmin:

ProxyPassMatch ^/phpmyadmin/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/usr/share/phpmyadmin/$1 
ProxyPassMatch ^/phpmyadmin/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/usr/share/phpmyadmin$1index.php 

e tutto funziona .. quando vado a MY.IP/phpinfo.php ottengo il phpinfo da /var/www/html/phpinfo.php e durante la mia visita MY.IP/phpmyadmin/phpinfo .php ottengo il contenuto processato di /usr/share/phpmyadmin/phpinfo.php.

Il mio problema è risolto ma non riesco ancora a capire perché la connessione di rete con php-fpm funzioni ma il socket unix no.

+0

Se potessi baciarti lo farei, puro genio! – Creek

+0

Mi hai salvato la vita! molte grazie ! –

+0

Ho anche provato a lavorarlo con socket Unix finché non mi sono arreso. Non funzionerà. Così ho deciso di tornare alla connessione TCP !! –

risposta

0

Sembra che tu abbia risolto questo problema.

  1. PHPMyAdmin è stato impostato per utilizzare mod_php5, che probabilmente non è stato installato poiché si utilizza PHP tramite PHP-FPM.
  2. È stato correttamente identificato che l'installazione di phpmyadmin richiedeva un proxy passante con il percorso corretto per i file PHP.

Per l'ultimo bit, di solito php-fpm ascolterà su un socket unix o su TCP, ma non entrambi.Qual è la direttiva listen impostata su /etc/php5/fpm/pool.d/www.conf? Sono state definite più di una listen direttive?

Sto indovinando che c'è solo quello Listen 127.0.0.1:9000 impostato lì.

+0

Sentitevi liberi di passare il mio commento se ha aiutato :) – dzhi

1

Ciò potrebbe essere dovuto al fatto che le prese sono in fase di supported from Apache 2.4.9 e in alcuni casi è stata utilizzata una versione precedente di 2.4?

+1

sì, questo era il problema con il socket unix, Apache supporta unix socket dalla v2.4.9 e superiore (o con una patch per v2.4.7). Stavo usando 2.4.7 ma a quel tempo la documentazione di Apache non specificava che il socket unix non era supportato. – papasj

5

Ero alle prese con lo stesso identico problema e non riuscivo a far funzionare phpmyadmin. Stavo ancora ricevendo il "File non trovato" sopra menzionato. Il mio problema era che dovevo inserire il mio nel mio ProxyPassMatch all'interno del mio file 000-default.conf all'interno della mia cartella ./sites-available e dovevo mettere queste voci PRIMA del mio predefinito. Questo era lo schema in fondo a questa pagina in cui ho trovato la soluzione: http://jordanconway.com/set-up-apache-2-4-with-php-fpm-on-ubuntu-13-10/

Ecco il modo in cui ho il mio setup di riferimento.

<VirtualHost *:80> 
    ... 
    DocumentRoot /var/www/html 
    ... 
    ProxyPassMatch ^/phpmyadmin/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/usr/share/phpmyadmin/$1 
    ProxyPassMatch ^/phpmyadmin/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/usr/share/phpmyadmin$1index.php 
    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1 
</VirtualHost>