2011-09-22 3 views
0

Mon problème est lié au fichier php.ini je pense, mais il pourrait être quelque chose d'autre. Supposons que nous ayons une architecture de site dans laquelle se trouve un autre répertoire nommé img dans le répertoire racine et un fichier nommé index.php. Dans le répertoire img il y a un fichier nommé image.jpg.Problèmes avec php.ini

Donc, dans index.php, pour faire référence à une image, j'utiliserais /img/image.jpg.

Ma question est, que dois-je changer en php.ini pour pouvoir écrire img/image.jpg au lieu de /img/image.jpg.

Merci

+0

Vous devriez changer votre bizarre codage/exigence de codage. – ceejayoz

Répondre

1

Rien de ce que PHP peut faire. Vous pouvez essentiellement le faire avec des réécritures Apache, mais il est beaucoup plus logique d'utiliser simplement des chemins absolus. Vous ne devriez pas essayer de mélanger les chemins absolus et relatifs car cela ne vous causera que des problèmes dans le futur. Quel est le problème avec l'ajout du '/' à l'avant du chemin? Non seulement cela, mais il va confondre les gens qui essaient de déboguer votre code que tous vos chemins relatifs deviennent des chemins absolus dans Apache.

+0

Voici la chose. Je viens d'installer xampp pour la première fois et j'ai remarqué que mes sites web qui fonctionnent très bien en ligne ne fonctionnent pas très bien en local avec xampp et apparemment ça a à voir avec le /. –

+0

En effet, le serveur Web utilise une racine Web dans laquelle tous les fichiers sont censés se trouver, alors que votre machine locale, le '/', peut signifier n'importe quoi. Et wow, vous envisagez de le faire juste pour que vous puissiez le tester plus facilement sur votre machine * locale *? Tisk Tisk. – animuson

2

Les chemins relatifs sont résolus par le navigateur Web, pas par PHP. Il n'y a aucun moyen de contourner ce comportement sur le serveur Web.

0

Ma question est, que dois-je changer dans php.ini pour pouvoir écrire img/image.jpg au lieu de /img/image.jpg.

Ceci répond à votre question mais pas la réponse que vous aimeriez entendre. Assez simple, nous allons d'abord la liste les paramètres ini:

  1. auto_prepend_file (probablement en liaison avec include_path)

Et voilà tout. Comment cela fonctionne:

Ajoutez un script php avec la directive ini. dans ce fichier, vous start output en mémoire tampon avec votre propre fonction de rappel:

function callback($buffer) 
{ 
    // slash that image that you want to write without slash 
    return (str_replace("img/image.jpg", "/img/image.jpg", $buffer)); 
} 

ob_start("callback"); 

Vous êtes maintenant en mesure d'écrire img/image.jpg au lieu de /img/image.jpg parce que votre fonction de filtre de sortie ne ré-écrire pour vous.

Mais faites attention à ce que vous n'essayez pas de corriger la mauvaise fin. La règle générale des références hypertextes s'applique, voir Uniform Resource Identifier (URI): Generic Syntax , Hypertext Transfer Protocol -- HTTP/1.1 et Hypertext Markup Language - 2.0 .