Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problème de fichier vvb.ini, pas d'ajout, ... #19

Closed
gllmhyt opened this issue Apr 10, 2013 · 24 comments
Closed

Problème de fichier vvb.ini, pas d'ajout, ... #19

gllmhyt opened this issue Apr 10, 2013 · 24 comments
Labels
Milestone

Comments

@gllmhyt
Copy link

gllmhyt commented Apr 10, 2013

Ça déconne sec à l'ajout d'un OPML :

PHP Warning:  simplexml_load_file(): I/O warning : failed to load external entity "https://autoblog.suumitsu.eu/?exportopml" in /var/www/autoblog/index.php on line 639

Pareil avec un RSS :

PHP Notice:  Trying to get property of non-object in /var/www/autoblog/class_rssfeed.php on line 77
PHP Fatal error:  Call to a member function addChild() on a non-object in /var/www/autoblog/class_rssfeed.php on line 77

Ensuite, page blanche et le RSS ne charge pas avec un beau :

PHP Warning:  parse_ini_file(/var/www/autoblog/./autoblogs/0f6289a0cb5b7f1fe8c018248e335953385d319f/vvb.ini): failed to open stream: No such file or directory in /var/www/autoblog/index.php on line 856

J'utilise NGinx sur un serveur PHP-FPM, voici mon virtual host :

server {
        listen 80;
        listen 443 ssl;
        server_name  autoblog.postblue.info;
        server_name_in_redirect off;

        root /var/www/autoblog;
        index index.php;

        if ($ssl_protocol = "") {
                rewrite ^   https://$server_name$request_uri? permanent;
        }

        ssl_certificate /etc/nginx/ssl/cacert/gottfried_crt.pem;
        ssl_certificate_key /etc/nginx/ssl/cacert/gottfried_privatekey.pem;

        location / {
                try_files $uri $uri/ /index.php?q=$uri&$args =404;
        }

       location ~ \.php$ {
                fastcgi_index index.php;
                include fastcgi_params;
                fastcgi_pass unix:/var/run/autoblog.sock;
                #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                #fastcgi_split_path_info ^(.+\.php)(.*)$;
                fastcgi_param HTTPS on;

                # Timeouts
                proxy_connect_timeout 600;
                proxy_read_timeout 600;
                fastcgi_connect_timeout 600;
                fastcgi_send_timeout 600;
                fastcgi_read_timeout 600;
        }
}

Le reste de ma configuration est globalement par défaut.

@ArthurHoaro
Copy link
Collaborator

Bon, eh bien j'en déduis que le bug n'est pas résolu...
On va le trouver ce bug !

@gllmhyt
Copy link
Author

gllmhyt commented Apr 10, 2013

Je suis disposé à participer au debug / test, avec l'une ou l'autre configuration Nginx ou PHP-FPM, ou filer toutes les informations qu'il faudra. (En passant, j'ai un sporadique "Connection timed out", quelle valeur me faudrait-il modifier dans mon php.ini ?)

@ArthurHoaro
Copy link
Collaborator

Déjà, le premier point c'est que je n'arrive pas à reproduire. J'ai testé :

  • Une configuration par défaut avec nginx
  • Le HTTPS à la racine d'un sous-domaine et dans un sous dossier sur Apache.

Tout ça fonctionne sur différents serveurs... Je cherche des pistes.

PHP Warning:  simplexml_load_file(): I/O warning : failed to load external entity "https://autoblog.suumitsu.eu/?exportopml" in /var/www/autoblog/index.php on line 639

J'ai la même chose, mais c'est parce que le site de Mitsu déconne depuis peu.

$data = simplexml_load_file('https://autoblog.postblue.info/?exportopml');

Fonctionne bien chez moi. Est-ce que tu peux vérifier ça avec un fichier temporaire :

 <?php     
 $data = simplexml_load_file('http://streisand.hoa.ro/?exportopml');
 var_dump($data);
 $data = simplexml_load_file('https://workspace.hoa.ro/?exportopml');
 var_dump($data);
 ?>

@ArthurHoaro
Copy link
Collaborator

Ensuite, on retrouve un bug constaté : https://autoblog.postblue.info/?rss ne fonctionne pas.

Est-ce que tu peux insérer dans index.php ligne 165 :

 var_dump( file_exists(RSS_FILE) );

Et si ça renvoie true, nous mettre le contenu du fichier resources/rss.xml ?

EDIT : Pour ta question, je crois que j'ai laissé les valeurs par défaut dans mon php.ini, mais j'ai ça :

max_execution_time = 30
max_input_time = 60

@gllmhyt
Copy link
Author

gllmhyt commented Apr 10, 2013

Avec le premier fichier de test j'avais :

PHP Warning:  simplexml_load_file(): I/O warning : failed to load external entity &quot;http://streisand.hoa.ro/?exportopml&quot; in /var/www/autoblog/test.php on line 2
PHP Warning:  simplexml_load_file(): I/O warning : failed to load external entity &quot;https://workspace.hoa.ro/?exportopml&quot; in /var/www/autoblog/test.php on line 4

Et pas de chargement dans le navigateur. J'ai décidé de remettre à zéro ma configuration PHP (ne pouvant pas retrouver de valeur modifiée), refaire les changements les plus restreints à ma pool pour autoblog, ... Et le script de test passe ! Cependant, pas moyen de trouver en quoi ni pourquoi, j'ai essayé de remettre des options au fur et à mesure, je ne trouve pas laquelle aurait causé problème.

L'export opml est à peu près résolu donc (voir à l'avenir si ça ne resurgit pas magiquement), tout comme le RSS : https://autoblog.postblue.info/?rss

@ArthurHoaro
Copy link
Collaborator

L'important c'est que ça marche.

Après, c'est quand même embêtant. Vu que Mitsu a rencontré les mêmes
problèmes, c'est ce que ce n'est pas si rarissime que ça...
Quand tu parles de conf PHP, tu parles du php.ini ?

Arthur HOARO - hoa.ro http://hoa.ro

Le 10/04/2013 19:45, John Doe a écrit :

Avec le premier fichier de test j'avais :

PHP Warning: simplexml_load_file(): I/O warning : failed to load external entity "http://streisand.hoa.ro/?exportopml" in /var/www/autoblog/test.php on line 2
PHP Warning: simplexml_load_file(): I/O warning : failed to load external entity "https://workspace.hoa.ro/?exportopml" in /var/www/autoblog/test.php on line 4

Et pas de chargement dans le navigateur. J'ai décidé de remettre à
zéro ma configuration PHP (ne pouvant pas retrouver de valeur
modifiée), refaire les changements les plus restreints à ma pool pour
autoblog, ... Et le script de test passe ! Cepandeant, pas moyen de
trouver en quoi ni pourquoi, j'ai essayé de remettre des options au
fur et à mesure, je ne trouve pas laquelle aurait causé problème.

L'export opml est à peu près résolu donc (voir à l'avenir si ça ne
resurgit pas magiquement), tout comme le RSS :
https://autoblog.postblue.info/?rss


Reply to this email directly or view it on GitHub
#19 (comment).

@gllmhyt
Copy link
Author

gllmhyt commented Apr 10, 2013

Dans php.ini, j'ai modifié :

  • post_max_size = 1024M
  • default_socket_timeout = 600
  • max_execution_time = 600
  • max_input_time = 600

Dans /etc/php5/fpm/pool.d/autoblog.conf :

  • request_terminate_timeout = 600
  • php_admin_value[memory_limit] = 3072M

Je suis en train de voir pour ne modifier ces valeurs que pour la pool autoblog, l'occasion de me replonger dans la documentation.

EDIT, valeurs en majeure partie dans le fichier de pool, php.ini restauré à sa valeur par défaut :

  • request_terminate_timeout = 600
  • php_admin_value[default_socket_timeout] = 600
  • php_admin_value[max_execution_time] = 600
  • php_admin_value[max_input_time] = 600
  • php_admin_value[memory_limit] = 3072M

NOTA l'import depuis un lien OPML consomme énormément de mémoire semblerait-il :

PHP Fatal error:  Allowed memory size of 3221225472 bytes exhausted (tried to allocate 72 bytes) in /var/www/autoblog/functions.php on line 81

@gllmhyt
Copy link
Author

gllmhyt commented Apr 10, 2013

Mise à jour Voilà, ça recommence :

PHP Warning:  simplexml_load_file(): I/O warning : failed to load external entity &quot;./resources/rss.xml&quot; in /var/www/autoblog/class_rssfeed.php on line 169
PHP Notice:  Trying to get property of non-object in /var/www/autoblog/class_rssfeed.php on line 77
PHP Fatal error:  Call to a member function addChild() on a non-object in /var/www/autoblog/class_rssfeed.php on line 77

De façon tout à fait aléatoire, qui plus est, ma configuration est pourtant la même que plus haut. Beaucoup plus de flux passent sans problème et son ajoutés, mais quelques uns me mènent encore à une page blanche.

Il semblerait que ce soient ces flux qui donnent une page blanche (j'en ai eu une avec http://www.cyrille-borne.com/) qui livrent l'erreur :

parse_ini_file(/var/www/autoblog/./autoblogs/db0976b488daca5e818e8f71ef54ff089fe9678d/vvb.ini): failed to open stream: No such file or directory in /var/www/autoblog/index.php on line 856

Je note aussi des 502 Bad Gateway quand je m'amuse à import l'OPML de mitsu, mais ça doit être ma configuration de NGinx qui doit flancher au niveau des fastcgi_buffers.

@mitsukarenai
Copy link
Owner

Étrange ça, dans la doc PHP il n'est pourtant pas indiqué que simplexml_load_file() peut pousser les devs à se tirer une balle 😲

Je vote pour une chaine JSON -> array -> RSS. Parce que file_put_contents(json_encode()) et json_decode(file_get_contents()) ils sont pas méchants avec moi, na ! o_0

À l'occasion faudrait que je re-teste le truc sous Cherokee et Lighttpd, c'est vrai qu'il y a pas que Apache dans la vie.

@ArthurHoaro
Copy link
Collaborator

Est-ce que vos serveurs ont plusieurs CPU/coeurs ?

NOTA l'import depuis un lien OPML consomme énormément de mémoire semblerait-il :

Ca j'arrive à reproduire ! Ca sera plus facile pour essayer de résoudre (ça me parait énorme quand même o_O).

@ArthurHoaro
Copy link
Collaborator

Suite à ce commit, j'espère que cette erreur est résolue :

simplexml_load_file(): I/O warning 

Si jamais le problème ne venait pas des locks, l'ajout d'une entrée dans le RSS n'est plus bloquant lors de la création d'un autoblog. Si tu as le temps de tester tout ça, ça serait chouette. :)

Pour la consommation mémoire, je ne sais pas encore.

EDIT:
@mitsukarenai J'ai rien contre, mais je pense pas que manipuler un fichier XML ou un JSON fasse une grande différence, si ce n'est qu'il va falloir le convertir. D'un autre côté, class_rssfeed.php est un truc que j'ai adapté assez vite fait, ça peut être amélioré.

@ArthurHoaro
Copy link
Collaborator

ping @postblue @mitsukarenai

Pas de nouvelles, bonne nouvelle ?

@gllmhyt
Copy link
Author

gllmhyt commented Apr 15, 2013

Je n'étais pas chez moi ce week-end, je n'ai pas encore eu le temps de tester ton commit en dehors d'un simple git pull -u, je te fais un retour au plus vite, normalement ce soir, ou dans la journée de demain si je ne trouve pas le temps aujourd'hui.

@mitsukarenai
Copy link
Owner

Désolé, j'avais pas testé entre temps (migration de serveur).

La réponse sous Cherokee 1.2 / PHP-CGI 5.3:


[15/04/2013 17:11:49.500] (error) handler_fcgi.c:115 - PHP Warning: 
    simplexml_load_file(): I/O warning : failed to load external entity
    "/tmp/phpmGHnQr" in /home/serveur/www/autoblog.suumitsu.eu/index.php on
    line 610

[15/04/2013 17:11:57.621] (error) handler_fcgi.c:115 - PHP Warning: 
    simplexml_load_file(): I/O warning : failed to load external entity
    "/tmp/phpu9bKGP" in /home/serveur/www/autoblog.suumitsu.eu/index.php on
    line 610

[15/04/2013 17:12:07.844] (error) handler_fcgi.c:115 - PHP Warning: 
    simplexml_load_file(): I/O warning : failed to load external entity
    "https://ecirtam.net/autoblogs/autoblogs/5e695c0823eb2820741784bedbe812f76206608f/?opml" in
    /home/serveur/www/autoblog.suumitsu.eu/index.php on line 638

Pourtant le fichier OPML me semble correct. Et en vouant ajouter en comtpe réseau social:

[15/04/2013 17:14:33.705] (error) handler_fcgi.c:115 - PHP Warning: 
    simplexml_load_file(): I/O warning : failed to load external entity
    "./resources/rss.xml" in
    /home/serveur/www/autoblog.suumitsu.eu/class_rssfeed.php on line 169
PHP
    Notice:  Trying to get property of non-object in
    /home/serveur/www/autoblog.suumitsu.eu/class_rssfeed.php on line 77
PHP
    Fatal error:  Call to a member function addChild() on a non-object in
    /home/serveur/www/autoblog.suumitsu.eu/class_rssfeed.php on line 77

En clair le traitement XML foire que ça soit pour l'ajout OPML, ou pour simplement traiter rss.xml (que ce dernier soit existant ou non). Résultant: une page blanche, et un dossier vide à supprimer manuellement.

Vous savez... ça marche bien, le JSON ^^ Ça permet d'inclure des trucs personnalisés, avec du contrôle d'intégrité, le stockage est plus compact, c'est plus facile à traiter en array pour que PHP puisse générer un RSS à la volée...

lobbyiste pro-JSON level 42

@gllmhyt
Copy link
Author

gllmhyt commented Apr 16, 2013

Mêmes erreurs que Mitsu, à la sauce Nginx et PHP-FPM, je n'aurais pas mieux dit (cependant ça a l'air de crasher moins violemment, même si ça casse quand même).

@ArthurHoaro
Copy link
Collaborator

Bon. Donc visiblement, rien à voir avec un problème sur le RSS, c'est carrément la fonction simplexml_load_file() qui foire à tous les coups...
A tout hasard, vous avez bien le paquet php-xml d'installé ?

Sinon, je me baserais bien sur autoblogs.php en mettant des

$s = file_get_contents(xml)
simplexml_load_string($s);

Sans grande conviction, ceci dit. Je n'arrive pas à comprendre la source du problème (et à le reproduire...). Simple curiosité, vous êtes sous quelle distrib ?

Moi j'ai rien contre le JSON Mitsu ! Recode ça, si tu veux ! :)
Par contre l'OPML c'est du XML, on n'y peut rien.

@gllmhyt
Copy link
Author

gllmhyt commented Apr 16, 2013

php-xml est inconnu sur ma distribution (Debian Wheezy), mais php5-xmlrpc est installé.

Impossible de trouver le paquet « php-xml ». Cependant, les
paquets suivants comportent « php-xml » dans leur nom :
  php-xml-rpc php-xml-rss php-xml-serializer php-xml-rpc2 php-xml-htmlsax3
  php-xml-parser php-xml-util php-xml-dtd

@ArthurHoaro
Copy link
Collaborator

J'ai fait tous mes tests sous Fedora et/ou CentOS, c'est peut être une piste. Je vais regarder ça.

@ArthurHoaro
Copy link
Collaborator

Je viens de monter une VM avec Debian 2.6, Apache, et les paquets php5 et php5-sqlite ; je n'ai pas ce problème... Je retenterai ce soir sans serveur web à l'install de la distrib + nginx.

@ArthurHoaro
Copy link
Collaborator

J'ai réussi à reproduire ! Enfin !

Vu que je ne connais pas ni Debian, ni nginx, j'ai suivi ce tuto comme une andouille : https://blog.pablo-ruth.fr/index.php/optimisation-web-installer-nginx-php-fpm-apc-sur-debian-squeeze/ (et donc ce repo: http://packages.dotdeb.org).

Un petit

apt-get install php5-xmlrpc
service nginx restart
service php5-fpm restart

et j'ai pu créer mon Autoblog, importer un OPML (enfin pas entièrement, consommation mémoire) et consulter le flux RSS... Du coup, si tu me dis que php5-xmlrpc est déjà installé sur ta machine, je ne vois vraiment pas ce qui foire...

Ceci dit, je doute que le bug provienne du projet en lui même, mais bel et bien d'un problème de dépendance.

@mitsukarenai
Copy link
Owner

Avec le commit 4838b0b il y a moyen de totalement remplacer class_rssfeed.php.
Reste toujours encore ce problème d'import OPML. On remplace ça par du JSON aussi ? 😉

@ArthurHoaro
Copy link
Collaborator

J'ai pas eu le temps de tester, mais beau boulot Mitsu.

L'issue est surtout relative aux erreurs/pages blanches (aléatoires ?) lors de l'ajout d'autoblogs... Je vais relancer quelques tests, et à voir si on peut fermer.

J'en ouvre une autre pour l'OPML, ça sera plus clair.

@ArthurHoaro
Copy link
Collaborator

On peut fermer ?

@mitsukarenai
Copy link
Owner

Yep :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants