This only changes the directory for PHP, the output directory stays the same. If you are trying to access images from a relative path and you use the following then it will fail to render the image:
chdir ('images');
if (file_exists('php.gif'))
{
echo '<html>';
echo '<body>';
echo '<img src="php.gif">';
echo '</body></html>';
}
//However, it is possible to use the <base> tag in the header to change the directory for the resulting HTML, as you can see however this requires you to put the full path in place.
chdir ('images');
if (file_exists('php.gif'))
{
echo '<html>';
echo '<head><base href = "http://uk.php.net/images/"></head>';
echo '<body>';
echo '<img src="php.gif">';
echo '</body></html>';
}
chdir
(PHP 4, PHP 5)
chdir — Zmienia bieżący katalog
Opis
bool chdir
( string $katalog
)
Zmienia bieżący katalog roboczy na katalog
Parametry
- katalog
-
Nowy bieżący katalog
Zwracane wartości
Zwraca TRUE w przypadku powodzenia, FALSE w przypadku błędu.
Przykłady
Example #1 Przykład użycia chdir()
<?php
// bieżący katalog
echo getcwd() . "\n";
chdir('public_html');
// nowy bieżący katalog
echo getcwd() . "\n";
?>
Powyższy przykład wyświetli coś podobnego do:
/home/vincent /home/vincent/public_html
Notatki
Informacja: Kiedy włączony jest tryb bezpieczny, PHP sprawdza czy katalog, na którym zostaną wykonane operacje, ma takie same UID (owner) jak skrypt, który jest aktualnie wykonywany.
chdir
andy dot clark at dial dot pipex dot com
21-Aug-2006 08:10
21-Aug-2006 08:10
herwin at snt dot utwente dot nl
17-Aug-2006 11:58
17-Aug-2006 11:58
When using PHP safe mode and trying to change to a dir that is not accessible due to the safe mode restrictions, the function simply fails without generating any kind of error message.
(Tested in PHP 4.3.10-16, Debian Sarge default)
jeprubio _At_ gmail dot com
27-May-2005 12:25
27-May-2005 12:25
If you run this script when $sym_dir is a symbolic link to a directory:
echo getcwd()."\n";
chdir ($sym_dir);
chdir ('../');
echo getcwd()."\n";
It returns for example:
/dades/loc/real/mapes/navteq/anloc
/mapes/anloc
It will not return to the previous directory, it returns to the parent of the real directory where it links the symbolic link.
It's not necessary a bug but I think it's important to have present this.
It could be solved saving the current directory and then returning to it. For example:
$cwd = getcwd();
echo getcwd()."\n";
chdir ($sym_dir);
chdir ($cwd);
echo getcwd()."\n";
It returns:
/dades/loc/real/mapes/navteq/anloc
/dades/loc/real/mapes/navteq/anloc
Have fun :)
-------
Josep Rubio (Anloc S.L. www.anloc.net)
