Bienvenue sur PEBKAC.fr, le site qui recense les anecdotes où l’on se moque des utilisateurs ne maîtrisant pas l’outil informatique. PEBKAC est un acronyme signifiant « Problem Exists Between Keyboard And Chair ».
Le problème se situe entre la chaise et le clavier : soumettez vos histoires, donnez votre avis !
Ce site n'est pas le site original pebkac.fr. Je publie ici la liste des PEBKAC que j'ai pu sauvegarder avant que le site original ne soit mis hors ligne.
Durant mon stage de fin de DUT, je suis chargé de remettre au propre du code PHP écrit par un collaborateur (qui était à l'époque en seconde année de Master).

Une fois l'installation du serveur local effectuée sur ma machine (sous Windows), je lance le site et constate qu'il est rempli d'erreurs du type « fichier non trouvé ».

Après des heures de recherches, j'ai découvert que lorsqu'il voulait créer des fichiers à travers son code, il passait par… des appels systèmes Linux !

Effectivement, ça devait probablement très bien fonctionner sur son Mac, mais sur mon PC beaucoup moins.
Bac+5, et toujours PEBKAC.
PEBKAC #9967 proposé par Allyaenn le 10/09/2014 | 30 commentaires | 👍🏽 👎🏽 -248
Il veut créer des fichiers, mais pour quoi faire ?
Commentaire #144858 écrit par Aaargh!!! le 10/09/2014 à 12h35 | 👍🏽 👎🏽
Je ne connais pas PHP, mais existe il des appels portables pour ce genre d'opération ? (et le PHP est il prévu pour être portable de façon général ? ou il est admis comme en C qu'on écrit pour une plateforme donnée ?)

Par ailleurs, si ça tournait sur un Mac je pense que tu veux parler d'appels système UNIX plutôt que Linux
Commentaire #144859 écrit par yomama le 10/09/2014 à 12h36 | 👍🏽 👎🏽
J'ajouterai: Et au niveau du cahier des charges, l'OS était-il précisé? Si on lui commandé un serveur qui ne tournerai pas sous Windows, ça peut s'expliquer.
Commentaire #144865 écrit par Youplà le 10/09/2014 à 13h09 | 👍🏽 👎🏽 +2
C'est pourquoi j'hésite à voter. Nous n'avons pas assez de renseignements. Si le site a été créé à demeure sur un serveur, je vois peu de raisons pour crier au loup.

Par contre, sur la raison de la création de fichiers, j'aimerais en savoir un peu plus, car j'ai déjà vu des trucs très pebkacquiens...
Commentaire #144866 écrit par Aaargh!!! le 10/09/2014 à 13h11 | 👍🏽 👎🏽 +1
(Que quelqu'un m'explique le vote négatif, svp)
Commentaire #144872 écrit par Youplà le 10/09/2014 à 13h15 | 👍🏽 👎🏽
Je ne vois pas de PEBKAC....la majorité (et la on doit tourner autour de 98%) des serveurs de prod faisant tourner apache sont sous linux
Commentaire #144874 écrit par lanoux le 10/09/2014 à 13h17 | 👍🏽 👎🏽
Dans l'ordre :
- Oui, PHP a tout un ensemble de fonctions standard pour lire/écrire/... des fichiers sans faire d'appel système. http://php.net/manual/fr/function.fwrite.php
- Oui, il y a bien quelques paramétrages qui peuvent changer d'un serveur à l'autre, mais de façon général le PHP est portable.
- Non, en C on n'écrit pas pour une plateforme donnée. Un source C bien écrit est portable d'un système à l'autre. Certes, ce n'est pas évident et il faut vachement faire gaffe, mais si on veut écrire du C qui compile et tourne aussi bien sur plusieurs systèmes, avec un minimum de code spécifique, on peut. Même entre des plateformes ayant des mots de longueur différente et/ou l'ordre des octets en mémoire différents.
Commentaire #144877 écrit par Shirluban le 10/09/2014 à 13h26 | 👍🏽 👎🏽
Le PEBKAC est d'utiliser une solution dépendante du système alors que PHP a des fonctions natives, et portables, pour faire la même chose. (Cela dit, certaines fonctions PHP comme chmod risquent de moins bien marcher sous Windows.)

D'un autre côté :
- Appels systèmes = une fonction PHP à connaitre.
- Fonctions natives = tout un tas de fonctions PHP à connaitre, avec des comportements tordus*.

* cf http://php.net/manual/fr/function.chmod.php :
chmod("/somedir/somefile", 755);   // notation décimale : probablement faux
 chmod("/somedir/somefile", "u+rwx,go+rx"); // chaîne : incorrect
 chmod("/somedir/somefile", 0755);  // notation octale : valeur du mode correcte
 chmod (file, "0644"); //php will not complain but will do an implicit conversion to an int before running chmod. Unfortunately the implicit conversion doesn't take into account the octal string so you end up with an integer version 644, which is 1204 octal
Commentaire #144881 écrit par Shirluban le 10/09/2014 à 13h39 | 👍🏽 👎🏽
(Un vote négatif exprime la non adhésion d'un votant à ce que tu as écrit. De rien.)
Commentaire #144882 écrit par Aaargh!!! le 10/09/2014 à 13h45 | 👍🏽 👎🏽
je le savais!!
Commentaire #144886 écrit par co2 le 10/09/2014 à 13h57 | 👍🏽 👎🏽
(ou un troll, ou la souris qui dérape)
Commentaire #144888 écrit par yomama le 10/09/2014 à 14h07 | 👍🏽 👎🏽
pour le C oui et non, tant que t'es sur du desktop à la limite pourquoi pas (quoique, il existe vraiment des appels portables qui permettent du multithread et tout?). Mais sur l'embarqué par example t'auras pas les mêmes OS d'une plateforme à l'autre, pas toujours la bibliothèque standard ou alors seulement des bouts…
Commentaire #144889 écrit par yomama le 10/09/2014 à 14h11 | 👍🏽 👎🏽
Aaaah ! Merci Aaargh!!! pour tes lumières aveuglantes ! :)
Commentaire #144890 écrit par Youplà le 10/09/2014 à 14h14 | 👍🏽 👎🏽
"appels systèmes Linux"
"Effectivement, ça devait probablement très bien fonctionner sur son Mac, mais sur mon PC beaucoup moins."

Aller sur pebkac en écrivant que windows = PC. Sans déclencher un troll au début.
J'hésites entre fort et fou.

Mais, je suis curieux de connaître les appels système en question.
Commentaire #144908 écrit par but2ene le 10/09/2014 à 15h15 | 👍🏽 👎🏽
L'extrême majorité des serveurs web tournent sous GNU/Linux, on trouve parfois du FreeBSD, y a des chances que le cas de ce serveur aussi
Selon le cahier des charges et les appels systèmes en question, il n'est pas forcément un PEBKAC, ça reste à voir

Par contre le PEBKAC c'est de qualifier quelqu'un de PEBKAC sans le justifier et de vouloir tester un code pour serveur web sous windows alors qu'il a manifestement été écrit pour tourner sous GNU/Linux (donc avec de grandes chances que le serveur en production soit lui même sous GNU/Linux)

Au pire une VM d'une distribution GNU/Linux permet de tester le code si t'as vraiment pas envie de faire une machine de test sous l'OS qui va bien

Et puis "Mac" et "PC" ne sont pas des OS... la plupart des OS, notamment les 3 les plus connus (windows, GNU/Linux, OS X) tournent sur les 2 types de machines (Mac a la même architecture que le PC depuis longtemps, juste quelques hridages en bonus... )
Commentaire #144914 écrit par Dave le 10/09/2014 à 15h33 | 👍🏽 👎🏽
L'ayant fait pour mon stage de licence, oui avec quelques #IFDEF il est possibe de rendre le code relativement portable entre deux plateformes, même si les deux ne respectent pas la norme POSIX. Par exemple, toujours pour ce stage, j'ai développer une ddl utilisant du multi-threading. Et au final entre la bibliothèque pthread et la prise en charge des threads offerte par windows.h, les deux syntaxes n'étaient pas complètement différentes, et j'ai pu le faire en factorisant pas mal le code. Bon ça faisait pas toujours un truc très lisible, et j'aurai mieux fait de créer deux fichiers différents (et l'inclusion aurait été effectuée par le makefile), mais bon, j'avais envie de m'amuser :) Mais je n'avais pas de problèmes d'interblocage potentiel à gérer. Sinon, je pense que j'aurai splitter les deux codes complètement...
Bref, ça se fait (au moins sur du desktop. J'ai jamais eu affaire à de l'embarqué...)
Commentaire #144927 écrit par o4b le 10/09/2014 à 17h33 | 👍🏽 👎🏽
Ben il précise que son PC est sous win un peu avant, du coup "sur mon PC" y fait référence ^^
Commentaire #144939 écrit par Loy le 10/09/2014 à 19h37 | 👍🏽 👎🏽
Définissez "Appels systèmes linux"

Si c'est des exec(), c'est effectivement un PEBKAC.
Si c'est du file_put_contents() alors c'est du PHP portable.
Commentaire #144942 écrit par Cartman34 le 10/09/2014 à 19h46 | 👍🏽 👎🏽
CTLP !!!* Je cite :
[...] des appels systèmes Linux !
 Effectivement, ça devait probablement très bien fonctionner sur son Mac[...]

Quelle horreur ! Linux est un noyau système, le Mac, un ensemble de plateformes matérielles, dont on peut raisonnablement supposer que le système est PommeOS, dont le noyau se base sur autre chose que linux.
Commentaire #144967 écrit par ygnobl le 10/09/2014 à 23h28 | 👍🏽 👎🏽
Ben oui et ? Que vient faire un mac avec des appels système linux ?
Commentaire #144970 écrit par but2ene le 11/09/2014 à 00h39 | 👍🏽 👎🏽
Un peu à la bourre non ?
Commentaire #144971 écrit par but2ene le 11/09/2014 à 00h40 | 👍🏽 👎🏽
Avec ce raisonnement, je peux créer une appli Java, mais contenant 90% de JNA (appel à du code natif), juste parce que je connais bien l'autre langage.

Quand tu crées une appli, tu la codes de bout en bout dans le langage demandé, sauf si c'est quasiment impossible à faire. La preuve, ça finit par poser des problèmes pour la maintenance (ou alors le PEBKAC est de ne pas avoir fourni les bons outils à l'auteur, ce qui revient au même).
Commentaire #144978 écrit par mini le 11/09/2014 à 08h41 | 👍🏽 👎🏽
Tiré de Wikipédia : "Mac OS X est donc un UNIX avec une interface graphique avancée".
Il est notoirement connu dans le milieu que l'on peut tout à fait sortir une console et exécuter les commandes unix de base sur un Mac. En natif.
Commentaire #144979 écrit par mini le 11/09/2014 à 08h43 | 👍🏽 👎🏽
Je serais d'accord avec des appels système Unix sous MacOS X. Mais là ce n'est pas le cas.

Mac est une machine pouvant tourner sous MacOS X. Si tu veux tu peux y mettre Windows, Linux, BSD, Plan9, dessus.
Commentaire #144982 écrit par but2ene le 11/09/2014 à 08h55 | 👍🏽 👎🏽
Tu peux installer des distros GNU/Linux sur un Mac d'après ce que j'ai vu
Puis si les appels systèmes concernent des outils standards (genre chmod.... ) y a des chances que ce soit compatible pommeOS aussi (dont le niyau se base sur BSD, et qui pompe un tas d'utilitaires GNU)
Mais je pense plutôt qu'il avait installé un GNU/Linux à côté de son pommeOS
Commentaire #144985 écrit par Dave le 11/09/2014 à 09h23 | 👍🏽 👎🏽
Je réagissais au fait qu'il n'a pas dit qu'un PC c'est forcément sous Win.

Après, il y a souvent amalgame entre UNIX et Linux, mais d'autres que moi feront un discours bien plus clair, donc je laisse la parole.
Commentaire #144987 écrit par Loy le 11/09/2014 à 09h51 | 👍🏽 👎🏽
"Si"
Commentaire #144998 écrit par mini le 11/09/2014 à 11h13 | 👍🏽 👎🏽
En effet, mais quand je vis ce PEBKAC, je ne pris pas le temps de lire les commentaires, et sautas directement sur le formulaire. Dont acte. Sinon, à aucun moment je n'écrivis que le système était nécessairement PommeOS, mais uniquement qu'on peut raisonnablement penser que celui-ci est utilisé. D'autre part, j'ai des doutes quand à la stricte compatibilité de PommeOS avec la LSB, mais je chipote...
Commentaire #145033 écrit par ygnobl le 11/09/2014 à 20h02 | 👍🏽 👎🏽
Il me semble que la spécification C14 intègre nativement le multi-threading. C'est donc maintenant le boulot du compilo de faire appel aux bonnes librairies, ce qui rends le code plus portable.
Commentaire #145059 écrit par Epok__ le 12/09/2014 à 17h04 | 👍🏽 👎🏽
Des appels système en PHP ? oui oui, c'est cela.

M'est avis que l'auteur confond appel système et appel à system(). Ce qui en ferait un gros gros CTLP.
Commentaire #145242 écrit par b0fh le 21/09/2014 à 23h14 | 👍🏽 👎🏽