Laluan relatif dan mutlak ke linux. Laluan mutlak dan relatif kepada fail dalam PHP

Seperti yang anda ketahui, dalam parameter href bagi teg () anda mesti menentukan laluan ke fail yang dirujuk.
Ramai orang menulis sesuatu seperti http://somesite.ru/catalog/doc.html. Ya, tiada siapa yang membantah, ia berkesan. Tetapi ada satu "tetapi". Mari kita lihat contoh.

Biarkan tapak anda dihoskan, sebagai contoh, pada beberapa pengehosan percuma dan alamatnya adalah seperti berikut: http://fsite.freehosting.ru.
Terdapat kira-kira 100 dokumen pada pelayan. Jadi anda memutuskan untuk memindahkan tapak web anda ke domain lain,
biarkan ia dibayar hosting di zon ru: http://site.ru. Nah, patutkah kita menukar http://fsite.freehosting.ru kepada http://site.ru di mana-mana sahaja?
Ya, terima kasih kepada editor seperti laman web, ini mungkin. Tetapi ini bukan penyelesaian.
Mari kita anggap bahawa sebelum memuat naik halaman ke pelayan, anda menyemak kefungsiannya
pada pelayan apache rumah anda (bagi mereka yang belum tahu apa itu "pelayan rumah", pergi ke sini (Memasang dan mengkonfigurasi pelayan apache), dan bukannya http://localhost anda perlu menulis http:// site.ru di mana-mana Setuju dengan ini, sekurang-kurangnya ia menyusahkan.

Penyelesaiannya ialah, apabila menentukan laluan ke fail, mengambil kira bukan kedudukannya di tapak, tetapi kedudukannya pada pelayan.

Jalan mutlak

Mari kita ambil, sebagai contoh, fail doc.html, yang terletak di: http://somesite.ru/catalog/doc.html. Seperti yang anda tahu, terdapat folder www pada pelayan. Seperti yang kita boleh lihat dari alamat, folder ini mengandungi folder katalog dan ia sudah mengandungi fail doc.html.

Jika, apabila menentukan laluan ke fail, anda meletakkan / sebelum alamat, maka ia akan serupa dengan yang berikut: root_directory_in_the_north/www/path ke fail.
Iaitu, http://somesite.ru/catalog/doc.html adalah serupa dengan yang berikut: /catalog/doc.html.
Jadi, apabila terdapat / di hadapan alamat, ia bermakna "countdown" bermula dari direktori www.
Sekarang, bukannya http://localhost/index.html, anda boleh menulis /index.html daripada sebarang dokumen.
Tetapi untuk pergi ke direktori cgi anda perlu menulis seperti ini: /cgi-bin/path ke fail.

Laluan yang dibuat menggunakan kaedah yang diterangkan di atas dipanggil mutlak, kerana laluan mutlak (penuh) ke fail pada pelayan ditunjukkan.

Laluan relatif

Terdapat juga laluan relatif, yang ditentukan secara relatif kepada dokumen itu sendiri dari mana pautan itu datang.
Contohnya, jika anda membuat pautan dalam doc.html newcat/new.html, ini menunjukkan bahawa fail new.html terletak dalam direktori newcat, yang seterusnya, berada dalam direktori yang sama dengan fail doc.html. Seperti yang anda lihat, laluan ini adalah relatif kepada fail doc.html. Di mana sahaja fail ini berada, laluan newcat/new.html akan sentiasa sah jika fail doc.html dan direktori newcat berada pada tahap yang sama (iaitu dalam direktori yang sama).

Anda juga boleh mengalihkan direktori berbanding dokumen. Untuk melakukan ini, anda perlu menulis ../.
Sebagai contoh, terdapat direktori besar, ia mengandungi dua direktori: primer dan sekunder. Direktori utama mengandungi fail doc.html yang sudah biasa; dan dalam direktori sekunder terdapat fail new.html. Untuk membuat pautan daripada fail doc.html ke fail new.html, anda perlu menulis ../secondary/new.html. Tetapi jika direktori besar terletak dalam direktori www, maka laluan ke fail new.html boleh ditentukan seperti ini: /big/secondary/new.html

Daripada kesimpulan, perlu dikatakan bahawa penggunaan laluan mutlak dan relatif sangat memudahkan kerja tuan web, sama ada pemula atau profesional. Jadi gunakan peluang ini, seperti yang mereka katakan, sepenuhnya, dan cuba elakkan laluan seperti http://site.ru/catalog/file.file, atau sekurang-kurangnya menggunakan bantuan mereka sesedikit mungkin.

baik buruk

Laluan mutlak


Dalam kes ini, semuanya sangat mudah, kami menunjukkan laluan terus ke fail yang terletak di domain lain. Adalah mungkin untuk menentukan laluan yang dipendekkan dengan menggunakan dua garis miring pada permulaan tanpa menyatakan secara jelas http atau https, dan pelayan itu sendiri akan menggantikan protokol (sambungan) yang diperlukan mengikut tetapan pelayan. Adalah penting untuk ambil perhatian bahawa paparan ini diperlukan untuk menavigasi antara tapak:
http://google.com

Berbanding dengan akar tapak


Dalam kes ini, penyemak imbas mengambil domain tapak dan menggantikan pautan yang ditentukan kepadanya. Dalam kes ini ia akan berfungsi http://site/css/style.css. Dalam kes http, tidak perlu risau tentang https, kerana ia akan diambil dalam bentuk di mana halaman dibuka pada masa ini, iaitu, dengan http ia akan menjadi http. Ia juga sangat mudah untuk memindahkan fungsi tertentu antara tapak yang berbeza atau memindahkan tapak dari satu domain ke domain lain tanpa menyentuh kod. Cara keutamaan untuk menentukan laluan ke halaman dan fail.

Berkenaan halaman ini


Kaedah yang kurang popular, kerana ia mengambil halaman semasa dan menambahkan alamat baharu pada laluannya ..com/trick/css/style.css . Hampir mustahil untuk digunakan dalam kes di mana kami menggunakan CNC.

Menggunakan tag asas


Dalam kes ini, bukannya penggantian domain standard, laluan dari pangkalan akan digantikan dengan laluan relatif. Iaitu, kami akan menerima fail yang terletak:
http://site/tricks/css/style.css

Laluan relatif dan mutlak dalam PHP

Segala-galanya sangat mudah, apabila bekerja dalam sistem fail kami akan mematuhi peraturan untuk bekerja dengan laluan dalam PHP. Jika kita menghantar arahan kepada pelayar klien, maka laluan HTML digunakan. Iaitu, dalam contoh berikut, kami menghantar dari PHP laluan ke penyemak imbas dengan halaman yang perlu dituju. Fakta bahawa penyemak imbas telah membuat peralihan antara halaman boleh dilihat dalam bar alamat:
header("Lokasi: /page2.php");
Jadi, kami membuka halaman page1.php, dan page2.php ditulis dalam bar alamat, dan intinya ialah penyemak imbas MULAI memuatkan halaman page1.php, dan kemudian menerima maklumat dengan pengalihan dan MEMUAT halaman kedua halaman2. php. Dalam kes ini, ubah hala adalah pada sisi klien (pelayar), yang bermaksud kami menggunakan peraturan yang berkaitan dengan HTML (alamat web).

Laluan mutlak dalam PHP

Laluan mutlak dalam PHP dianggap sebagai laluan mutlak daripada direktori di mana pelayan web dipasang. Laluan ini boleh diperolehi daripada:
$_SERVER["DOCUMENT_ROOT"]
Jika kami mengambil pelayan ini sebagai contoh, laluannya ialah: /home/school/public_html/schoolphp, yang bermaksud bahawa untuk menentukan laluan penuh ke foto "/photo/img1.jpg", anda perlu menentukan perkara berikut laluan:
getimagesize("/home/school/public_html/schoolphp/photo/img1.jpg"); getimagesize($_SERVER["DOCUMENT_ROOT"]."/photo/img1.jpg");
Saya ingin ambil perhatian bahawa tapak itu boleh ditempatkan dalam subdirektori, iaitu, untuk:
http://site/forum/
Ia boleh menjadi sangat sukar untuk menggunakan DOCUMENT_ROOT, kerana forum (sebagai skrip luaran) belum tahu di mana ia akan ditempatkan di tapak. Terdapat beberapa cara untuk menangani masalah ini, mari kita senaraikan beberapa:

1) Buat halaman sebagai subdomain.

2) Tulis laluan mutlak dalam konfigurasi dalam config.php, iaitu:
Teras::$ROOT = $_SERVER["DOCUMENT_ROOT"]; getimagesize(Teras::$ROOT."/photo/img1.jpg"); // gunakan laluan mutlak yang boleh diubah suai
Kini anda boleh memautkan keseluruhan tapak anda ke Core::$ROOT tanpa sebarang penyesalan, dan jika anda secara tidak sengaja perlu menukar laluan ke fail yang disertakan, anda boleh mengatasi nilai Core::$ROOT;

Berbanding dengan fail mula (asas)

Dalam banyak sistem index.php terdapat satu titik masuk, iaitu, index.php dibuka, dan fail lain disambungkan daripadanya.
sertakan "./modules/allpages.php";
Dalam kes ini, allpages.php akan disambungkan di sepanjang laluan: /home/school/public_html/schoolphp/modules/allpages.php. Kaedah ini mudah kerana jika anda menulis sertakan dalam fail allpages.php: sertakan "./modules/module/page.php";, maka ia masih akan dicari berbanding dengan titik masuk, iaitu index.php:
/home/school/public_html/schoolphp/modules/module/page.php
Ini adalah pelaksanaan yang agak mudah memandangkan kami mengetahui dengan jelas struktur aplikasi kami berbanding dengan root index.php. Walaupun kita memanggil mana-mana fail lain selain daripada index.php, laluan akan berfungsi sama. Kami memanggil dir.php , yang bermaksud bahawa laluan akan diambil berbanding dengan fail dir.php!

Apa lagi yang anda perlu tahu?

Saya tidak dapat membantu tetapi mengingatkan mereka yang terlupa atau mencadangkan kepada mereka yang tidak tahu bahawa anda boleh kembali bukan sahaja jauh ke dalam direktori, tetapi juga ke atas (folder belakang), dan sintaks mereka agak mudah:
sertakan "../file.php";
Dalam kes ini, direktori fail ini atau root index.php akan diambil dan mengembalikan 1 folder, di mana fail "file.php" akan dicari.

DOCUMENT_ROOT bukan satu-satunya pilihan untuk mendapatkan laluan akar tapak. Mari kita lihat manual: "Direktori akar dokumen di mana skrip semasa dilaksanakan adalah betul-betul yang dinyatakan dalam fail konfigurasi pelayan." . Ini bermakna jika laluan ditulis secara salah dalam fail konfigurasi, keseluruhan tapak tidak akan berfungsi. Apa nak buat? Anda boleh menulis surat kepada pentadbir dan pemilik pengehosan yang menjadi hos pelayan dengan harapan mereka akan membetulkan kekurangan mereka. Atau cari alternatif yang stabil, iaitu __DIR__ , ini ialah laluan mutlak ke fail yang diberikan di mana kod sedang berjalan. Katakan kita mempunyai fail konfigurasi dalam folder konfigurasi, dan supaya menggunakan __DIR__ kita tidak perlu kembali satu folder ke atas setiap kali dengan menulis __DIR__"/../" kita boleh menulis __DIR__ dengan selamat ke dalam pembolehubah kita, dalam contoh di bawah saya menulisnya dalam harta kelas (pelajaran No. 24 , yang tidak mendapatnya, gunakan pembolehubah biasa):
Teras::$ROOT = __DIR__; // Atau untuk PHP lama - diname(__FILE__);
Saya juga ingin mengingatkan anda tentang sesuatu yang menarik dan penting. Menurut keselamatan, pelayan web melarang bergerak melalui direktori di atas akar tapak. Iaitu, tapak itu terletak di laluan berikut: /home/school/public_html/schoolphp, tetapi kandungan folder /home atau /home/school tidak akan tersedia untuk dibaca.

Bolehkah PHP menggunakan laluan HTML? Ya, dalam fungsi khas, contohnya:
file_get_contets("http://site");

berlatih

Dalam projek lama saya, saya menggunakan DOCUMENT_ROOT, kini saya beralih kepada laluan index.php relatif "./folder/file".

Zend2, produk daripada pembangun PHP, salah satu FrameWork yang paling kompleks pada masa ini juga menggunakan laluan relatif dengan sintaks yang berbeza daripada saya, iaitu, "folder/fail".

Forum IPB.3 menggunakan diname(__FILE__).

Kesimpulan:

1) Dalam HTML kami menggunakan laluan relatif kepada akar tapak, iaitu “/file.php” (Barisan bermula dengan tetak).
2) dalam PHP kami gunakan relatif kepada fail akar "./file.php" (Barisan bermula dengan titik dan serong), alternatif adalah menggunakan sifat yang dimulakan pada akar: __DIR__;
3) Ubah hala pengepala menggunakan laluan daripada HTML. PHP bekerja dengan sistem fail (menyambung fail, menyimpan dan mengedit imej) - dengan laluan PHP.

Seperti yang anda ketahui, dalam parameter href bagi teg () anda mesti menentukan laluan ke fail yang dirujuk.
Ramai orang menulis sesuatu seperti http://somesite.ru/catalog/doc.html. Ya, tiada siapa yang membantah, ia berkesan. Tetapi ada satu "tetapi". Mari kita lihat contoh.

Biarkan tapak anda dihoskan, sebagai contoh, pada beberapa pengehosan percuma dan alamatnya adalah seperti berikut: http://fsite.freehosting.ru.
Terdapat kira-kira 100 dokumen pada pelayan. Jadi anda memutuskan untuk memindahkan tapak web anda ke domain lain,
biarkan ia dibayar hosting di zon ru: http://site.ru. Nah, patutkah kita menukar http://fsite.freehosting.ru kepada http://site.ru di mana-mana sahaja?
Ya, terima kasih kepada editor seperti laman web, ini mungkin. Tetapi ini bukan penyelesaian.
Mari kita anggap bahawa sebelum memuat naik halaman ke pelayan, anda menyemak kefungsiannya
pada pelayan apache rumah anda (bagi mereka yang belum tahu apa itu "pelayan rumah", pergi ke sini (Memasang dan mengkonfigurasi pelayan apache), dan bukannya http://localhost anda perlu menulis http:// site.ru di mana-mana Setuju dengan ini, sekurang-kurangnya ia menyusahkan.

Penyelesaiannya ialah, apabila menentukan laluan ke fail, mengambil kira bukan kedudukannya di tapak, tetapi kedudukannya pada pelayan.

Jalan mutlak

Mari kita ambil, sebagai contoh, fail doc.html, yang terletak di: http://somesite.ru/catalog/doc.html. Seperti yang anda tahu, terdapat folder www pada pelayan. Seperti yang kita boleh lihat dari alamat, folder ini mengandungi folder katalog dan ia sudah mengandungi fail doc.html.

Jika, apabila menentukan laluan ke fail, anda meletakkan / sebelum alamat, maka ia akan serupa dengan yang berikut: root_directory_in_the_north/www/path ke fail.
Iaitu, http://somesite.ru/catalog/doc.html adalah serupa dengan yang berikut: /catalog/doc.html.
Jadi, apabila terdapat / di hadapan alamat, ia bermakna "undur" bermula dari direktori www.
Sekarang, bukannya http://localhost/index.html, anda boleh menulis /index.html daripada sebarang dokumen.
Tetapi untuk pergi ke direktori cgi anda perlu menulis seperti ini: /cgi-bin/path ke fail.

Laluan yang dibuat menggunakan kaedah yang diterangkan di atas dipanggil mutlak, kerana laluan mutlak (penuh) ke fail pada pelayan ditunjukkan.

Laluan relatif

Terdapat juga laluan relatif, yang ditentukan secara relatif kepada dokumen itu sendiri dari mana pautan itu datang.
Contohnya, jika anda membuat pautan dalam doc.html newcat/new.html, ini menunjukkan bahawa fail new.html terletak dalam direktori newcat, yang seterusnya, berada dalam direktori yang sama dengan fail doc.html. Seperti yang anda lihat, laluan ini adalah relatif kepada fail doc.html. Di mana sahaja fail ini berada, laluan newcat/new.html akan sentiasa sah jika fail doc.html dan direktori newcat berada pada tahap yang sama (iaitu dalam direktori yang sama).

Anda juga boleh mengalihkan direktori berbanding dokumen. Untuk melakukan ini, anda perlu menulis ../.
Sebagai contoh, terdapat direktori besar, ia mengandungi dua direktori: primer dan sekunder. Direktori utama mengandungi fail doc.html yang sudah biasa; dan dalam direktori sekunder terdapat fail new.html. Untuk membuat pautan daripada fail doc.html ke fail new.html, anda perlu menulis ../secondary/new.html. Tetapi jika direktori besar terletak dalam direktori www, maka laluan ke fail new.html boleh ditentukan seperti ini: /big/secondary/new.html

Daripada kesimpulan, perlu dikatakan bahawa penggunaan laluan mutlak dan relatif sangat memudahkan kerja tuan web, sama ada pemula atau profesional. Jadi gunakan peluang ini, seperti yang mereka katakan, sepenuhnya, dan cuba elakkan laluan seperti http://site.ru/catalog/file.file, atau sekurang-kurangnya menggunakan bantuan mereka sesedikit mungkin.

Mana-mana halaman web, gambar, video, dsb. ialah, pertama sekali, fail yang mempunyai sendiri mutlak atau relatif laluan (alamat). Fail itu sendiri di Internet terletak pada komputer yang dipanggil pelayan. Oleh itu, anda harus mempertimbangkan bagaimana fail itu dibentangkan pada pelayan dan di Internet. Dalam artikel ini saya ingin menjelaskan perkara di atas dan menjelaskan isu yang dibangkitkan. Boleh kita cuba?

Laluan mutlak (alamat)

Apakah laluan mutlak ke fail?

Jalan mutlak atau alamat ialah laluan atau alamat penuh, berbanding dengan folder rumah pada pelayan atau Nama domain Internet.

berkata " folder rumah“Maksud saya permulaan ruang yang diperuntukkan oleh penyedia hosting. Sebagai contoh, jika kita bercakap tentang pelayan tempatan pada sistem pengendalian Windows, pemacu itu sendiri akan bertindak sebagai folder rumah, iaitu C:/. Pada masa yang sama, selalunya penyedia pengehosan memperuntukkan kepada pengguna hanya ruang maya (bersyarat) tertentu, yang mana folder tertentu, sering dipanggil /home, bertindak sebagai folder rumah.

berkata " Nama domain"Saya maksudkan URL yang bermula dengan sebutan protokol, contohnya: http://sitename.ru/. Di Internet, ini ialah folder rumah untuk setiap sumber yang dibentangkan.

Bagaimana untuk mengetahui laluan mutlak pada pelayan dalam PHP?

Sekiranya semuanya lebih atau kurang jelas dengan alamat URL, maka dengan folder rumah pada pelayan keadaannya agak rumit. Pada akhirnya, setiap pembekal mempunyai masalah sendiri dan ini harus diambil kira.

Biar saya mulakan dengan fakta bahawa laluan mutlak pada pelayan biasanya ditentukan secara relatif kepada lokasi skrip di mana ini berlaku. Sebagai contoh, fail config.php terletak dalam folder akar tapak dan kita perlu mengetahui laluan mutlak untuknya.

Biar saya jelaskan dengan mengatakan “ Folder akar"Maksud saya folder pada pelayan khusus untuk tapak. Inilah yang berfungsi sebagai titik permulaan URL berhubung dengan nama domain.

Untuk melakukan ini, anda boleh menggunakan pemalar __FILE__, yang mengandungi laluan penuh dan nama fail semasa di mana ia dipanggil. Untuk mendapatkan hanya laluan penuh dan mengalih keluar nama fail semasa, anda boleh menggunakan fungsi dirname(), yang mengembalikan direktori induk bagi laluan yang ditentukan. Sebagai contoh:

$abspath = nama nama(__FAIL__) ."/";

Dalam PHP 5.3 dan lebih baru, anda sudah boleh menggunakan pemalar __DIR__:

$abspath = __DIR__

Oleh itu, adalah sangat mudah untuk memasukkan fail config.php pada masa hadapan dan menggunakan laluan mutlak pembolehubah $abspath yang diperolehi di dalamnya sebagai titik permulaan. Sebagai contoh, katakan bahawa skrip test.php terletak dalam folder: path/ - dan fail data.txt yang dikehendaki berada dalam folder: data/. Dalam kes ini, panggilan mungkin kelihatan seperti:

Include_once("../config.php"); $fh = fopen($abspath ."/2013/12/data/data.txt", "r");

Sila ambil perhatian bahawa saya menyambungkan fail config.php menggunakan laluan relatif, tetapi lebih lanjut mengenainya kemudian.

Laluan relatif (alamat)

Apakah laluan fail relatif?

Laluan relatif atau alamat ialah laluan atau alamat yang berkaitan dengan lokasi fail di mana fail lain diakses.

Mana-mana sistem fail ialah hierarki ketat folder dan fail ibu bapa dan anak. Contohnya: C:\folder\file.php – di sini folder\folder ialah anak kepada pemacu C:\ dan induk kepada fail file.php.

Untuk kejelasan, mari kita pertimbangkan hierarki berikut:

  • fail1.php
  • folder\
    • fail.php
    • subfolder\
      • fail3.php

Untuk mengakses fail C:\file2.php daripada fail C:\folder\file.php , kita perlu keluar dari folder folder semasa\ , i.e. naik satu tingkat. Untuk ini anda boleh menggunakan, folder (Saya juga akan mengatakan pseudo-folder) Direktori Ibubapa, mewakili dua titik (..) . Dalam erti kata lain, kita akan mendapat laluan: ..\file2.php - relatif kepada fail fail.php .

Untuk mengakses fail C:\folder\subfolder\file3.php daripada fail C:\folder\file.php, kita perlu memasukkan subfolder\ subfolder, i.e. turun satu tingkat. Dengan cara ini kita mendapat laluan: subfolder\file3.php - relatif kepada fail file.php .

Mari jadikan perkara lebih rumit dan pergi daripada fail C:\folder\subfolder\file3.php ke fail C:\file2.php . Laluan relatif akan kelihatan seperti: ..\..\file2.php - kami telah naik dua tahap lebih tinggi. Lakukan sebaliknya, iaitu dari fail C:\file2.php kita beralih kepada fail C:\folder\subfolder\file3.php. Laluan relatif akan kelihatan seperti: folder\subfolder\file3.php - kita akan turun dua peringkat.

Kebaikan dan keburukan laluan relatif (alamat)

Jelas sekali, laluan relatif tidak mengandungi folder rumah dan folder induk. Oleh itu, alamat akhir adalah lebih pendek. Lebih-lebih lagi, jika anda perlu berpindah dari satu domain ke domain lain, tidak perlu mendaftarkan alamat mutlak baharu.

Sebaliknya, jika kami memetik kandungan tapak pada sumber lain, dengan gambar yang sama di mana laluan relatif ditentukan, kami akan menerima ralat, kerana Tiada folder tapak dan fail pada sumber pihak ketiga. Ini akan berlaku jika halaman dilihat dalam cache enjin carian. Sekali lagi, menggunakan laluan relatif boleh membuat kesilapan dengan mudah, yang akan mengakibatkan masalah pengindeksan tapak.

Untuk meringkaskan, perlu diingatkan bahawa adalah dinasihatkan untuk meminimumkan penggunaan laluan atau alamat relatif dan menggunakan laluan dan alamat mutlak.

Kesimpulan

Dalam artikel saya, saya cuba mempertimbangkan isu asas yang berkaitan dengan laluan mutlak dan relatif (alamat) kepada fail dan folder. Sebenarnya, jika anda bekerja pada komputer, maka a priori anda sudah mempunyai idea tentang sistem fail, tetapi tanpa mengambil kira beberapa nuansa, agak sukar untuk keluar dari tanah dan menimbulkan beberapa isu yang pasti berkaitan dengan pengalamatan yang betul. Itu sahaja yang saya ada. Terima kasih kerana memberi perhatian. Semoga berjaya!

pada pukul 8:00 Edit mesej 5 ulasan

tapak anda wujud dalam dua dimensi, seolah-olah.
Nyata dan maya.

Untuk semua pelawat, ini adalah pelayan web maya. Yang berbeza, antara lain, kerana TIADA FAIL WUJUD di atasnya. jika anda menulis %20" target="_blank">http://site.ru/file.html- ini bukan fail. Ini ialah URI, alamat maya. Mungkin tiada sebarang fail bernama file.html pada pelayan sama sekali. Ini semua adalah alamat maya, bukan fail.
Dan penyemak imbas berfungsi secara khusus dengan alamat.

Bagi pembangun, tapak web ialah program yang dijalankan pada komputer sebenar yang sangat khusus. Dengan cakera keras, direktori dan fail yang sangat khusus. Dan skrip, bekerja dengan datanya, memuatkan skrip lain, berfungsi dengan FILES sebenar, pada DISK fizikal.

Di dalam perbezaan inilah terletaknya kesukaran yang sering dihadapi oleh pemula.
Mereka kehilangan fail, mengelirukan pautan dengan fail, mengakses fail tempatan melalui HTTP, atau memasukkan fail daripada akar pelayan web.

Tetapi anda hanya perlu memahami dengan jelas dua perkara:
1. Bezakan antara akar pelayan web, seperti yang dilihat oleh penyemak imbas, dan akar sistem fail pada cakera.
2. Perbezaan antara laluan relatif dan laluan mutlak.

Mari kita mulakan dengan yang kedua.
Ia sangat mudah. Jika laluan ditentukan daripada akar sistem, maka ini adalah laluan mutlak. Ia seperti alamat pos dalam kehidupan sebenar - tidak kira ke mana anda pergi, tetapi dengan alamat yang tepat anda akan sentiasa mencari tempat yang betul.
contoh laluan mutlak:
/var/www/site/forum/index.php
/img/frame.gif
daripada:\windows\command.com

Dalam sistem Unix dan di tapak web, akarnya dilambangkan dengan garis miring - "/".
Ia penting. Ini bukan sekadar tongkat, tetapi ALAMAT bebas, laluan.
Dalam alamat %20" target="_blank">http://www.site.ru/ tebasan terakhir bukan untuk kecantikan! Ia menandakan alamat yang sangat khusus - permulaan tapak.
Pada cakera dalam sistem Unix anda juga boleh menaip "cd /" dan anda akan dibawa ke direktori root.
Dalam sistem Windows, sistem fail dibahagikan kepada cakera, oleh itu, alamat mutlak mesti menunjukkan nama cakera. Tiada akar mutlak bagi keseluruhan sistem fail dalam Windows setiap cakera mempunyainya sendiri. Contohnya, C:\ E:\
oleh itu, walaupun laluan dalam Windows bermula dengan garis miring, ia bukan laluan mutlak, tetapi laluan relatif. Berbanding dengan cakera semasa. Dan mutlak bermula dengan huruf.

Jika akar tidak dinyatakan pada permulaan laluan, maka laluan ini akan menjadi relatif, dan ia diperoleh daripada kedudukan semasa. Dalam kehidupan sebenar, ia seperti jalan ke kedai arak - "dua blok ke kiri dan lurus sepanjang jalan." Laluan ini hanya boleh dicapai dari titik tertentu. Dari yang lain anda akan berakhir di tempat yang sama sekali berbeza.
Contoh paling mudah bagi laluan relatif hanyalah nama fail.
Jika fail berada dalam direktori yang sama dengan program itu, ia akan menemuinya dengan menambahkan laluan semasa pada nama fail.
contoh laluan relatif:
file.php (fail berada dalam folder yang sama)
./file.php (fail berada dalam folder yang sama. Entri sedemikian kadangkala diperlukan dalam sesetengah sistem Unix)
images/picture.jpg (fail berada dalam folder imej, yang ada dalam folder semasa)
../file.php (fail berada dalam folder yang terletak satu tahap lebih tinggi daripada yang semasa)
../../file.php (fail berada dalam folder yang terletak dua tahap lebih tinggi daripada yang semasa)

Kedua-dua sistem pengendalian dan penyemak imbas, apabila mereka menemui laluan relatif, membinanya kepada laluan mutlak. tetapi masing-masing dengan caranya sendiri.

Sekarang mari kita beralih ke titik pertama.
Perbezaan antara akar pelayan web, seperti yang dilihat oleh penyemak imbas, dan akar sistem fail pada cakera.
Secara umum, semuanya harus jelas dari penjelasan sebelumnya.
Pada cakera, laluan ke fail skrip boleh seperti ini:
/var/www/site/forum/index.php
Pada masa yang sama, alamat maya skrip ini apabila dilihat melalui penyemak imbas ialah:
%20" target="_blank">http://www.site.ru/forum/index.php
Dalam contoh ini, mudah untuk melihat di mana dua dimensi bersilang: kedua-dua alamat mempunyai bahagian yang sama - /forum/index.php - dan inilah sebab kekeliruan.
Untuk penyemak imbas, ini adalah laluan paling lengkap yang boleh dilakukan. Ia bermula dari akar tapak.
Untuk skrip yang berjalan pada pelayan, ini hanyalah SEBAHAGIAN daripada laluan.
untuk skrip, laluan /forum/index.php tidak akan wujud - tiada direktori forum dalam akar cakera!
untuk mendapatkan laluan penuh untuk apa yang kelihatan seperti /forum/index.php di tapak, anda perlu menambah di sebelah kiri laluan ke folder yang dianggap sebagai punca untuk keseluruhan pelayan web.
dalam contoh kita adalah
/var/www/site
Laluan ini ditetapkan dalam konfigurasi pelayan web dan terkandung dalam pembolehubah sistem PHP $_SERVER["DOCUMENT_ROOT"]

Dalam pelayan maya - yang dilihat pengguna - sebaliknya, tiada cakera. Terdapat akar tapak. Iaitu, agar mana-mana pautan dijamin berfungsi, tidak kira dari mana di tapak ia dipanggil, ia mestilah mutlak.
Jika anda mempunyai, katakan, dua bahagian di tapak web anda:
%20" target="_blank">http://www.site.ru/about/info.php
Dan
%20" target="_blank">http://www.site.ru/job/vacancy.php
kemudian, jika anda membuat pautan dalam fail info.php semata-mata ke vacancy.php , pelayar tidak akan menemuinya - ia akan mencari alamat %20," target="_blank">http://www.site.ru/about/vacancy.php, melengkapkan laluan daripada direktori semasa.
Oleh itu, anda perlu menulis laluan penuh dari akar tapak - /job/vacancy.php
Semua ini terpakai, sudah tentu, bukan sahaja untuk tag
tetapi juga dan mana-mana yang lain di mana pautan ke fail lain digunakan.

Pautan ke alamat setempat hendaklah ditulis tanpa menyatakan protokol dan domain - hanya laluan dari akar tapak - /job/vacancy.php. Pautan ke tapak lain hendaklah ditulis sepenuhnya - %20." target="_blank">http://www.site1.ru/job/vacancy.php .

PHP menyediakan banyak alat untuk bekerja dengan fail, direktori dan URL.

Pemalar __FILE__ mengandungi nama fail boleh laku semasa.
Tidak seperti PHP_SELF, ia mengandungi nama fail yang sedang dilaksanakan.
reka bentuk kelihatan sangat berguna diname(__FILE__), yang mana adalah wajar untuk menggantikan semua panggilan ke fail yang terletak dalam direktori yang sama dengan skrip panggilan. Sebagai contoh:
memerlukan diname(__FILE__). "/init.php"
Fungsi diname(), bersama-sama dengan basename(), adalah salah satu yang paling biasa digunakan untuk bekerja dengan fail dan direktori.

Catatan:
Sekiranya terdapat masalah dengan laluan semasa memindahkan skrip dari Windows ke sistem Unix, pertama sekali perhatikan kes huruf. Pada pelayan Unix, kes huruf dalam nama fail penting, File.txt dan file.txt adalah dua
fail yang berbeza, dan di bawah Windows - sama. Adalah lebih baik untuk sentiasa menulis nama fail dengan tepat, menghormati kes itu.