Bug 2407 - Rue no funciona en PHP7
Summary: Rue no funciona en PHP7
Status: RESOLVED FIXED
Alias: None
Product: Solo UInf [ uso exclusivo de UInf ]
Classification: Unclassified
Component: General (show other bugs)
Version: 1.0
Hardware: PC, Torre o Portatil No sabe/ No Corresponde
: Normal normal
Assignee: Andrés Rodríguez
URL:
Depends on:
Blocks: 2203
  Show dependency treegraph
 
Reported: 2017-09-21 13:47 -03 by Guillermo Reisch
Modified: 2018-01-02 14:24 -03 (History)
0 users

See Also:
Local: Casona Jaime Cibils
Dep/Cat: UInf - Servidores(exCETI)
Dep/Cat: ---
Dep/Cat: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Guillermo Reisch 2017-09-21 13:47:39 -03
Bueno, eso... hay que meterle!
Comment 1 Guillermo Reisch 2017-09-21 15:38:49 -03
OJS!
OK! el OJS no funciona con PHP7.0 (que es el que se instala por defecto en la
nueva versión)

## Creo un respaldo antes de romper algo....
lvcreate --snapshot --name websrv_20170828_ojs --extents 20%ORIGIN vg/websrv

# Bajo la nueva version desde GIT 
# mkdir /var/www/rue2.fenf.edu.uy/
# git clone https://github.com/pkp/ojs.git ojs-git
# ln -s ojs-git ojs   # link para apuntar la pagina a "ojs"
# cd ojs-git

### Obviamente me leo el README!!

Mergeo entre el config viejo y el nuevo.
Respaldo DB
Genero una nueva base de datos "rue2" con la info de la vieja Base de Datos
Realizo una copia de los artículos (carpeta "file"), y la ingreso adentro de /var/www/rue.fenf.edu.uy/

#### Instalando las dependencias!!!

# apt-get install composer   # Manejador de dependencias de php

# cd lib/pkp
# composer update

Problem 1
    - Installation request for phpunit/phpunit-selenium 1.4.2 -> satisfiable by phpunit/phpunit-selenium[1.4.2].
    - phpunit/phpunit-selenium 1.4.2 requires ext-curl * -> the requested PHP extension curl is missing from your system.

# apt-get isntall php-curl
# apt-get install phpunit

Instalo demasiadas cosas!!!! Bueno... revert!
# lvconvert --merge vg/websrv_20170828_ojs

############### Start again!!!! #############

lvcreate --snapshot --name websrv_ojs2 --extents 20%ORIGIN vg/websrv

# apt-get install composer php-curl 

greisch@websrv2:/var/www/rue2.fenf.edu.uy/ojs-git/lib/pkp$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 35 installs, 0 updates, 0 removals
  - Installing symfony/process (v3.3.8): Downloading (100%)         
  - Installing kriswallsmith/assetic (v1.4.0): Downloading (100%)         
  - Installing robloach/component-installer (0.2.3): Downloading (100%)         
  - Installing components/jquery (1.11.0): Downloading (100%)         
  - Installing components/jqueryui (1.11.0): Downloading (100%)         
  - Installing oyejorge/less.php (v1.7.0.3): Downloading (100%)         
  - Installing phpmailer/phpmailer (v5.2.8): Downloading (100%)         
  - Installing smarty/smarty (v2.6.28): Downloading (100%)         
  - Installing ezyang/htmlpurifier (v4.6.0): Downloading (100%)         
  - Installing tinymce/tinymce (4.1.7): Downloading (100%)         
  - Installing ircmaxell/password-compat (v1.0.4): Downloading (100%)         
  - Installing michelf/php-markdown (1.5.0): Downloading (100%)         
  - Installing sebastian/recursion-context (1.0.5): Downloading (100%)         
  - Installing sebastian/exporter (1.2.2): Downloading (100%)         
  - Installing sebastian/diff (1.4.3): Downloading (100%)         
  - Installing sebastian/comparator (1.2.4): Downloading (100%)         
  - Installing symfony/yaml (v3.3.8): Downloading (100%)         
  - Installing sebastian/version (1.0.6): Downloading (100%)         
  - Installing sebastian/global-state (1.1.1): Downloading (100%)         
  - Installing sebastian/environment (1.3.8): Downloading (100%)         
  - Installing doctrine/instantiator (1.0.5): Downloading (100%)         
  - Installing phpunit/php-text-template (1.2.1): Downloading (100%)         
  - Installing phpunit/phpunit-mock-objects (2.3.8): Downloading (100%)         
  - Installing phpunit/php-timer (1.0.9): Downloading (100%)         
  - Installing phpunit/php-file-iterator (1.4.2): Downloading (100%)         
  - Installing phpunit/php-token-stream (1.4.11): Downloading (100%)         
  - Installing phpunit/php-code-coverage (2.2.4): Downloading (100%)         
  - Installing webmozart/assert (1.2.0): Downloading (100%)         
  - Installing phpdocumentor/reflection-common (1.0): Downloading (100%)         
  - Installing phpdocumentor/type-resolver (0.3.0): Downloading (100%)         
  - Installing phpdocumentor/reflection-docblock (3.2.2): Downloading (100%)         
  - Installing phpspec/prophecy (v1.7.0): Downloading (100%)         
  - Installing phpunit/phpunit (4.8.36): Downloading (100%)         
  - Installing phpunit/phpunit-selenium (1.4.2): Downloading (100%)         
  - Installing moxiecode/plupload (v2.1.9): Downloading (100%)         
kriswallsmith/assetic suggests installing twig/twig (Assetic provides the integration with the Twig templating engine)
kriswallsmith/assetic suggests installing leafo/lessphp (Assetic provides the integration with the lessphp LESS compiler)
kriswallsmith/assetic suggests installing leafo/scssphp (Assetic provides the integration with the scssphp SCSS compiler)
kriswallsmith/assetic suggests installing ptachoire/cssembed (Assetic provides the integration with phpcssembed to embed data uris)
kriswallsmith/assetic suggests installing leafo/scssphp-compass (Assetic provides the integration with the SCSS compass plugin)
kriswallsmith/assetic suggests installing patchwork/jsqueeze (Assetic provides the integration with the JSqueeze JavaScript compressor)
symfony/yaml suggests installing symfony/console (For validating YAML files using the lint command)
sebastian/global-state suggests installing ext-uopz (*)
phpunit/phpunit-mock-objects suggests installing ext-soap (*)
phpunit/php-code-coverage suggests installing ext-xdebug (>=2.2.1)
phpunit/phpunit suggests installing phpunit/php-invoker (~1.1)
Writing lock file
Generating autoload files
> ComponentInstaller\Installer::postAutoloadDump
Compiling component files

#### Empila de dependencias puedo usar las del sistema envés de bajar las de "composer"

# apt-get install composer php-curl php-symfony-process libphp-phpmailer  php-htmlpurifier tinymce php-markdown php-yaml
phpunit-global-state php-doctrine-instantiator  php-text-template phpunit-mock-objects php-timer phpunit-environment
php-file-iterator php-token-stream php-codecoverage php-webmozart-assert  
php-phpdocumentor-reflection-common php-phpdocumentor-type-resolver php-phpdocumentor-reflection-docblock
php-phpspec-prophecy phpunit libjs-plupload libphp-adodb

######### Actualizando la base de datos

# php tools/upgrade.php upgrade

Por lo visto no me deja actualizar la Base de Datos porque:
 * mysql depreco funciones y ahora las webs "viejas" no quieren andar!

Después de mucho tiempo y foros me di cuenta de que al usar el "mysql" no estaba actualizado ; osea el driver "mysql" esta implementado por "adodb" que ese modulo esta des-actualizado ; pero.... esta la nueva versión del modulo que no esta deprecado en PHP7 que es "mysqli" ; así que cambio la configuración en config.php para usar el modulo "mysqli" envés de "mysql".

Por otro lado se probo con la version del GIT en el branch "ojs-stable_3_0_2" sin embargo NO FUNCIONO EN ESTE BRANCH ; así que me resigne y lo corrí sobre el branch "main" (seria el testing)...

# php tools/upgrade.php check
Code version:      3.0.2.0
Database version:  2.4.6.0
Latest version:    3.0.2.0

# php tools/upgrade.php upgrade
---- waiting.... !!!!
FINISH!!!

Después me doy cuenta que faltaban dependencias.

# cd plugins/paymethod/paypal
# composer install      ### Dependencias de paypal!

Y también hay un cacho de codigo que se compila usando npm!!
# apt-get install npm   ## manejador de dependencias y paquetes node.js

NOTA: Al empezar a instalarlo el snapshot con el respaldo SE LLENO y quedo corrupto (jajjaja). Igual ya estaba casi todo terminado...
# lvremove vg/websrv2_ojs2   ## borro el respaldo...

# npm install      ## instalo dependencias
# npm run build    ## compilo todo.

Me fijo porque muere al compilar y por lo visto faltaba un modulo dentro de las dependencias, así que modifico el "package.json" agregando la dependencia "babel-runtime" que faltaba.
A su vez genero un clone del git de ojs en github, arreglo el problema y genero un pull-request a los desarrolladores (fallo el chequeo automático)

# apt-get clean

El espacio de la partición vg/www me queda chico así que lo incremento de 5 a 7
# lvresize --size 7G vg/www

#### LISTO!!!!!!!

Ahora genero una carpeta "no git" con el estado de la web frizado
# cp -r ojs-git ojs-20170920
# find ojs-20170920 -iname ".git*" -print0 | xargs -0 -n1 rm -rf
# rm ojs
# ln -s ojs-20170920 ojs   ## redirecciono el DocumentoRoot al nuevo directorio

### FUNCIONA! BIEN OK!!!

Hay que migrar a websrv1 (ahora esta en websrv2 / PHP7) ; de esa forma si funciona bien en websrv1 (PHP5) entonces lo ponemos en producción en la nueva salida de la revista!

# rsync -avzrXx /var/www/rue2.fenf.edu.uy root@websrv1:/var/www/
Genero el /etc/apache2/sites-avaibles/rue2.fenf.edu.uy.conf
LISTO!! FUNCIONA EN PHP5 (y también en PHP7)

Paso la bola a Andres! Ahora que termine de darle los detalles en websrv1 y listo! tenemos Rue con OJS 3!
Comment 2 Andrés Rodríguez 2018-01-02 14:24:44 -03
Lo vemos más adelante.
Por ahora queda sin efecto.
Cualquier cosa se reabre