php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта

getcwd

(PHP 4, PHP 5, PHP 7, PHP 8)

getcwd β€” ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ имя Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°

ОписаниС

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ имя Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°.

Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

Π£ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π² случаС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ выполнСния ΠΈΠ»ΠΈ false Π² случаС ошибки.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #1 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования getcwd()

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ выполнСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅:

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

User Contributed Notes 19 notes

getcwd() returns the path of the «main» script referenced in the URL.

dirname(__FILE__) will return the path of the script currently executing.

I had written a script that required several class definition scripts from the same directory. It retrieved them based on filename matches and used getcwd to figure out where they were.

Didn’t work so well when I needed to call that first script from a new file in a different directory.

I use this code to replicate the pushd and popd DOS commands in PHP:

«On some Unix variants, getcwd() will return FALSE if any one of the parent directories does not have the readable or search mode set, even if the current directory does.»

Just so you know, MacOS X is one of these variants (at least 10.4 is for me). You can make it work by applying ‘chmod a+rx’ to all folders from your site folder upwards.

PHP4 returns /tmp
PHP5 returns /

Something to be aware of.

This is a function to convert a path which looks something like this:

To a proper directory path:

//saves our current working directory to a variable
$oldcwd = getcwd ();
//changes the directory to the one to convert
//$path is the directory to convert (clean up), handed over to the //function as a string

if you link your php to /bin/linkedphp and your php is at for ex /home/actual.php

when you run linkedphp in somewhere in your filesystem,
getcwd returns /bin instead of working dir,

solution: use dirname(__FILENAME__) instead

Some server’s has security options to block the getcwd()

Take care if you use getcwd() in file that you’ll need to include (using include, require, or *_once) in a script located outside of the same directory tree.

example:
//in /var/www/main_document_root/include/MySQL.inc.php
if ( strpos ( getcwd (), ‘main_’ )> 0 ) <
//code to set up main DB connection
>
?>

//in home/cron_user/maintenance_scripts/some_maintenance_script.php
require_once ( ‘/var/www/main_document_root/include/MySQL.inc.php’ );
?>

In the above example, the database connection will not be made because the call to getcwd() returns the path relative to the calling script ( /home/cron_user/maintenance_scripts ) NOT relative to the file where the getcwd() function is called.

A very simple workaround to regain the behaviour you’re used to from your «ordinary» webpage scripting is to include something like that at the beginning of your script:

// Note: all pathes stored in subsequent Variables end up with a DIRECTORY_SEPARATOR

// how to store the working directory «from where» the script was called:
$initial_cwd = preg_replace ( ‘

// how to switch symlink-free to the folder the current file resides in:
chdir ( dirname ( realpath ( __FILE__ ) ) );

// how to get a path one folder up in any case :
$my_parent_folder = preg_replace ( ‘

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта

There is no way to implement a backwards compatible __DIR__ in versions prior to 5.3.0.

A lot of notes here concern defining the __DIR__ magic constant for PHP versions not supporting the feature. Of course you can define this magic constant for PHP versions not yet having this constant, but it will defeat its purpose as soon as you are using the constant in an included file, which may be in a different directory then the file defining the __DIR__ constant. As such, the constant has lost its *magic*, and would be rather useless unless you assure yourself to have all of your includes in the same directory.

Concluding: eye catchup at gmail dot com’s note regarding whether you can or cannot define magic constants is valid, but stating that defining __DIR__ is not useless, is not!

If you’re using PHP with fpm (common in this day and age), be aware that __DIR__ and __FILE__ will return values based on the fpm root which MAY differ from its actual location on the file system.

This can cause temporary head-scratching if deploying an app where php files within the web root pull in PHP files from outside of itself (a very common case). You may be wondering why __DIR__ returns «/» when the file itself lives in /var/www/html or whathaveyou.

You might handle such a situation by having NGINX explicitly add the necessary part of the path in its fastcgi request and then you can set the root on the FPM process / server / container to be something other than the webroot (so long as no other way it could become publicly accessible).

Hope that saves someone five minutes who’s moving code to FPM that uses __DIR__.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ «Π’ΠΎΠ»ΡˆΠ΅Π±Π½Π°Ρ» константа __DIR__

php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта. QzyoW. php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта Ρ„ΠΎΡ‚ΠΎ. php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта-QzyoW. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° QzyoW. (PHP 4, PHP 5, PHP 7, PHP 8)

php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта. uhHvv. php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта Ρ„ΠΎΡ‚ΠΎ. php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта-uhHvv. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° uhHvv. (PHP 4, PHP 5, PHP 7, PHP 8)

3 ΠΎΡ‚Π²Π΅Ρ‚Π° 3

Π­Ρ‚ΠΎ дирСктория Ρ‚ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ исполняСтся ΠΊΠΎΠ΄:

__FILE__ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Π΅Ρ€Π½Π΅Ρ‚ Π²Π°ΠΌ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ исполняСмого Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ„Π°ΠΉΠ»Π° (Ρ‚.Π΅. basename(__FILE__) === __DIR__ )

__DIR__ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ выполняСмого скрипта.

__DIR__ Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΏΠ°ΠΏΠΊΠΈ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится это скрипт, /usr/www/site/html

php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта. uhHvv. php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта Ρ„ΠΎΡ‚ΠΎ. php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта-uhHvv. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° uhHvv. (PHP 4, PHP 5, PHP 7, PHP 8)

php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта. EU4Pk. php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта Ρ„ΠΎΡ‚ΠΎ. php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта-EU4Pk. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° EU4Pk. (PHP 4, PHP 5, PHP 7, PHP 8)

Если Π²Ρ‹ поставитС свой скрипт Π½Π° cron ΠΈ Ρƒ вас ΠΏΡƒΡ‚ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π±Π΅Π· константы DIR ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ², Ρ‚ΠΎ скрипт Π½Π΅ Π½Π°ΠΉΠ΄Ρ‘Ρ‚ Π½ΡƒΠΆΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹. хотя ΠΏΡ€ΠΈ Ρ€ΡƒΡ‡Π½ΠΎΠΌ запускС всё Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΊ.

php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта. photo. php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта Ρ„ΠΎΡ‚ΠΎ. php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта-photo. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° photo. (PHP 4, PHP 5, PHP 7, PHP 8)

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅

ΠŸΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° Π»Π΅Π½Ρ‚Ρƒ

Для подписки Π½Π° Π»Π΅Π½Ρ‚Ρƒ скопируйтС ΠΈ Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ эту ссылку Π² Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для чтСния RSS.

Π΄ΠΈΠ·Π°ΠΉΠ½ сайта / Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ Β© 2021 Stack Exchange Inc; ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½Π° условиях Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ cc by-sa. rev 2021.9.30.40353

НаТимая Β«ΠŸΡ€ΠΈΠ½ΡΡ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ cookieΒ» Π²Ρ‹ ΡΠΎΠ³Π»Π°ΡˆΠ°Π΅Ρ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Stack Exchange ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ cookie Π½Π° вашСм устройствС ΠΈ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² соотвСтствии с нашСй ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² cookie.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Π΅ ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ Π² PHP

Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΏΡƒΡ‚ΠΈ Π² PHP ΠΈ URL

Когда ΠΌΡ‹ смотрим Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ Ρ„ΠΈΠ»ΡŒΠΌ ΠΈΠ»ΠΈ сСриал, ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚.

А Π·Π° ΠΊΠ°Π΄Ρ€ΠΎΠΌ сущСствуСт совсСм Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΉ для нас ΠΌΠΈΡ€: стилисты ΠΈ Π³Ρ€ΠΈΠΌΡ‘Ρ€Ρ‹, искусствСнныС Π΄Π΅ΠΊΠΎΡ€Π°Ρ†ΠΈΠΈ, Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ спСцэффСктов ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

Π’ΠΏΠΎΠ»Π½Π΅ вСроятно, Ρ‡Ρ‚ΠΎ ΠΈ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ Ρ‚Π°ΠΌ Ρ‚ΠΎΠΆΠ΅ Π½Π΅Ρ‚, Π° всС URL адрСса ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌ СдинствСнным PHP Ρ„Π°ΠΉΠ»ΠΎΠΌ.

Новички часто ΠΏΡƒΡ‚Π°ΡŽΡ‚ ΠΏΡƒΡ‚ΠΈ ΠΊ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ с URL адрСсами. БСйчас я Ρ€Π°Π·Π±Π΅Ρ€Ρƒ ΠΏΠ°Ρ€Ρƒ Ρ‚Π°ΠΊΠΈΡ… ошибок, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‡ΡƒΠ²ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ.

Ошибка β„–1: ΠŸΠΎΠ΄ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° физичСского ΠΏΡƒΡ‚ΠΈ Π² URL

Π­Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ структуру сСрвСра. Он Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… дисков D, ΠΎΠ½ Π²ΠΈΠ΄ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ URL адрСса.

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ ссылка выглядит Ρ‚Π°ΠΊ (Ρ€Π°Π·Π½ΠΈΡ†Ρƒ объясню Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅):

Ошибка β„–2: ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ скриптов ΠΏΠΎ URL

Иногда Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΈ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ физичСский Ρ„Π°ΠΉΠ» ΠΏΠΎ Π΅Π³ΠΎ URL:

Π­Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ Π½Π΅ сам скрипт, Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Ρ„Π°ΠΉΠ»Ρ‹ Ρ‡Π΅Ρ€Π΅Π· URL Π²ΠΎΠΎΠ±Ρ‰Π΅ идСя ΠΎΡ‡Π΅Π½ΡŒ опасная.

ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ Π² PHP

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, это ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΎΡ‚ корня диска Π΄ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΏΠ°ΠΏΠΊΠΈ. НачинаСтся со слСша ΠΈΠ»ΠΈ Π±ΡƒΠΊΠ²Ρ‹ диска (Windows).

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ скрипта ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ магичСской константы __FILE__ :

Для получСния Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится скрипт, Π΅ΡΡ‚ΡŒ магичСская константа __DIR__ :

Как этим ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Допустим, Ρƒ нас Π² ΠΊΠΎΡ€Π½Π΅ сайта Π»Π΅ΠΆΠ°Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ index.php ΠΈ config.php ΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ.

Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ config.php ΠΏΠΎ Π΅Π³ΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ, Π΅ΡΡ‚ΡŒ Π΄Π²Π° способа ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это:

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ константа __DIR__ Π½Π΅ добавляСт слСш послС послСднСй ΠΏΠ°ΠΏΠΊΠΈ, ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π΅Π³ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ Π² PHP

Π”Π°Π»Π΅Π΅ PHP попытаСтся Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ» Π² ΠΏΠ°ΠΏΠΊΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°.

НапримСр, Ссли ΠΌΡ‹ Π² index.php ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ» scripts/script.php, Π° Π² этом самом script.php ΡƒΠΆΠ΅ пытаСмся ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ, Ρ‚ΠΎΠ³Π΄Π° поиск Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ ΠΈ Π² ΠΏΠ°ΠΏΠΊΠ΅ scripts Ρ‚ΠΎΠΆΠ΅.

ИмСнно ΠΏΠΎ этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ я ΠΏΡ€ΠΈΠ·Ρ‹Π²Π°ΡŽ тСбя ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ использования ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ Π² PHP.

ΠšΠΎΠΌΡƒ-Ρ‚ΠΎ ΠΈΠ· ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² эта Ρ„Ρ€Π°Π·Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΡ‚ΡŒΡΡ, Π½ΠΎ я ΡΡ‡ΠΈΡ‚Π°ΡŽ это СдинствСнным Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ.

Π’Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ слоТного Π² Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ константы __DIR__ ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ скрипта, Ρ‡Ρ‚ΠΎ автоматичСски сдСлаСт ΠΏΡƒΡ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΌ.

ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ Π² URL

Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ с http Π½Π° https ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ всС ссылки автоматичСски смСнят ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π±Π΅Π³Π°Ρ‚ΡŒ ΠΏΠΎ всСму сайту ΠΈ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

Π›ΠΈΡ‡Π½ΠΎ я практичСски всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΊΡ€ΠΎΠΌΠ΅ случаСв, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ссылку Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ΄Π΄ΠΎΠΌΠ΅Π½ (blog.site.ru, shop.site.ru ΠΈ Ρ‚.Π΄.).

ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ Π² URL

ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ Π² URL ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π±Π΅Π· слСша Π² Π½Π°Ρ‡Π°Π»Π΅ ссылки, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ Π² URL Π±ΠΎΠ»Π΅Π΅ прСдсказуСмы, Ρ‡Π΅ΠΌ Π² PHP. Но я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΌ, Π³Π΄Π΅ это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

Π§Π°Ρ‰Π΅ всСго ΠΈΡ… использованиС ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Π΅. И Π²ΠΎΡ‚ ΠΏΠ°Ρ€Π° Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ часто ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΈ.

Ошибка β„–1: ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ ΠΊ стилям, скриптам ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ стили ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ сайту:

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ URL style.css ΠΈ Π²ΠΈΠ΄ΠΈΡ‚, Ρ‡Ρ‚ΠΎ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. По ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ страницС.

Ошибка β„–2: РСкурсия Π² ссылках

ΠŸΡ€ΠΈ использовании ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ Π΅ΡΡ‚ΡŒ риск случайно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π° сайтС бСсконСчныС ссылки. Π’ΠΎΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… способов:

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ настроСна Сдиная Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π°.

Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ

Помимо указания ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΠ°ΠΏΠΎΠΊ, ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΏΡƒΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ «ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° ΠΏΠ°ΠΏΠΊΡƒ Π²Ρ‹ΡˆΠ΅», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π’ ΠΊΠΎΠ΄Π΅ Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Ρ„Π°ΠΉΠ» config.php, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π½Π΅ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠ°ΠΏΠΊΠ΅, Π° Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ. Π‘ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΌΠΈ путями это Ρ‚ΠΎΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚:

И с URL-адрСсами Ρ‚ΠΎΠΆΠ΅:

Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ссылку Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π²Π°Π΅Ρ‚ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

PHP для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²

php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта. image loader. php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта Ρ„ΠΎΡ‚ΠΎ. php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° php тСкущая ΠΏΠ°ΠΏΠΊΠ° скрипта. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. (PHP 4, PHP 5, PHP 7, PHP 8)

Π’ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠΈ сСрии Β«PHP для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…Β», сСгодняшняя ΡΡ‚Π°Ρ‚ΡŒΡ Π±ΡƒΠ΄Π΅Ρ‚ посвящСна Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ PHP ΠΈΡ‰Π΅Ρ‚ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹.

Для Ρ‡Π΅Π³ΠΎ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ

PHP это скриптовый язык, созданный ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ для быстрого ваяния Π΄ΠΎΠΌΠ°ΡˆΠ½ΠΈΡ… страничСк (Π΄Π°, Π΄Π° ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ это ΠΆΠ΅ Π±Ρ‹Π» Personal Home Page Tools), Π° Π² дальнСйшСм Π½Π° Π½Ρ‘ΠΌ ΡƒΠΆΠ΅ стали ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠ°Π³Π°Π·ΠΈΠ½Ρ‹, социалки ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΊΠΈ Π½Π° ΠΊΠΎΠ»Π΅Π½ΠΊΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ выходят Π·Π° Ρ€Π°ΠΌΠΊΠΈ Π·Π°Π΄ΡƒΠΌΠ°Π½Π½ΠΎΠ³ΠΎ, Π½ΠΎ ΠΊ Ρ‡Π΅ΠΌΡƒ это я – Π° ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρ‡Π΅ΠΌ большС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, Ρ‚Π΅ΠΌ большС ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ дублирования ΠΊΠΎΠ΄Π°, Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° логичСскиС кусочки ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ лишь ΠΏΡ€ΠΈ нСобходимости (это Ρ‚ΠΎΠΆΠ΅ самоС чувство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ Ρƒ вас, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ‡ΠΈΡ‚Π°Π»ΠΈ это ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ кусочки). Для этой Ρ†Π΅Π»ΠΈ Π² PHP Π΅ΡΡ‚ΡŒ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ±Ρ‰ΠΈΠΉ смысл ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сводится ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ²:

Если Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт index.php, Ρ‚ΠΎ PHP всё это Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ:

Когда Ρ„Π°ΠΉΠ» ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‚ΠΎ Π΅Π³ΠΎ ΠΊΠΎΠ΄ оказываСтся Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ области видимости, Ρ‡Ρ‚ΠΎ ΠΈ строка Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ всС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, доступныС Π² Π΄Π°Π½Π½ΠΎΠΉ строкС Π±ΡƒΠ΄ΡƒΡ‚ доступны ΠΈ Π² ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅. Если Π² ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ Π±Ρ‹Π»ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ классы ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости (Ссли ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ для Π½ΠΈΡ… Π½Π΅ Π±Ρ‹Π» ΡƒΠΊΠ°Π·Π°Π½ namespace).

Если Π²Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚Π΅ Ρ„Π°ΠΉΠ» Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ доступ ΠΊ области видимости Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Ρ‚ΠΎΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ:

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ² являСтся Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° парсинг ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ€Π΅ΠΆΠΈΠΌ HTML, ΠΏΠΎ этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ любой ΠΊΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² PHP Ρ‚Π΅Π³ΠΈ:

Если Ρƒ вас Π² Ρ„Π°ΠΉΠ»Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ PHP ΠΊΠΎΠ΄, Ρ‚ΠΎ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ‚Π΅Π³ принято ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ, Π΄Π°Π±Ρ‹ случайно Π½Π΅ Π·Π°Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΡ‚ΡŒ символы послС Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ‚Π΅Π³Π°, Ρ‡Ρ‚ΠΎ Ρ‡Ρ€Π΅Π²Π°Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ (ΠΎΠ± этом я Π΅Ρ‰Ρ‘ расскаТу Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅).

А Π²Ρ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ сайт-Ρ„Π°ΠΉΠ» Π½Π° 10 000 строк? АТ слёзы Π½Π° Π³Π»Π°Π·Π°Ρ… (β•₯_β•₯)…

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ²

Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано Π²Ρ‹ΡˆΠ΅, Π² PHP сущСствуСт нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ²:

Π’ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, это Π½Π΅ совсСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ языковыС конструкции, ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобочки Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. ΠšΡ€ΠΎΠΌΠ΅ всСго ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ способы ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ выполнСния Ρ„Π°ΠΉΠ»ΠΎΠ², Π½ΠΎ это ΡƒΠΆΠ΅ сами ΠΊΠΎΠΏΠ°ΠΉΡ‚Π΅, ΠΏΡƒΡΡ‚ΡŒ это Π±ΡƒΠ΄Π΅Ρ‚ для вас Β«Π·Π°Π΄Π°Π½ΠΈΠ΅ со Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΠΎΠΉΒ» πŸ˜‰

И Π±ΡƒΠ΄Π΅ΠΌ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ нСсколько Ρ€Π°Π·:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ выполнСния Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π²Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„Π°ΠΉΠ»Π° echo.php:

БущСствуСт Π΅Ρ‰Ρ‘ ΠΏΠ°Ρ€ΠΎΡ‡ΠΊΠ° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ ΠΎΠ½ΠΈ Π²Π°ΠΌ Π½Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ β€” auto_prepend_file ΠΈ auto_append_file. Π­Ρ‚ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π΄ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ всСх Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ послС выполнСния всСх скриптов соотвСтствСнно. Π― Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ Β«ΠΆΠΈΠ²ΠΎΠΉΒ» сцСнарий, ΠΊΠΎΠ³Π΄Π° это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Π“Π΄Π΅ ΠΈΡ‰Π΅Ρ‚?

Если ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° Π²Ρ‹ прописываСтС Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ (Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉΡΡ с «/») ΠΈΠ»ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ (Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉΡΡ с «.» ΠΈΠ»ΠΈ «..»), Ρ‚ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° include_path Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π°, Π° поиск Π±ΡƒΠ΄Π΅Ρ‚ осущСствлён Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ стоило Π±Ρ‹ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎ safe_mode, Π½ΠΎ это ΡƒΠΆΠ΅ Π΄Π°Π²Π½ΠΎ история (с вСрсии 5.4), ΠΈ я надСюсь Π²Ρ‹ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒΡΡ с Π½ΠΈΠΌ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅, Π½ΠΎ Ссли Π²Π΄Ρ€ΡƒΠ³, Ρ‚ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±Ρ‹Π»ΠΎ, Π½ΠΎ ΠΏΡ€ΠΎΡˆΠ»ΠΎ.

ИспользованиС return

Π—Π°Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΊΡ‚Ρ‹, Π±Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Тилось ΠΈ Ρ‚Π°ΠΊ Ρ…ΠΎΡ€ΠΎΡˆΠΎ: Ссли Π²ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π² основном Ρ„Π°ΠΉΠ»Π΅ Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π±Ρ‹Π»ΠΈ Π»ΠΈ ΠΎΠ½ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π΄ΠΎ return ΠΈΠ»ΠΈ послС

ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ°ΠΏΠΎΠΊ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ². Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ„Π°ΠΉΠ»ΠΎΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ:

ΠŸΡ€ΠΈ этом ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

АвтоматичСскоС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ с ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ² выглядят ΠΎΡ‡Π΅Π½ΡŒ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΎ, Ρ‚Π°ΠΊ ΠΈ Π΅Ρ‰Ρ‘ ΠΈ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° ΠΈΡ… ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ β€” Π΅Ρ‰Ρ‘ Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Π°Ρ€ΠΎΡ‡Π΅ΠΊ, Π·Π°Ρ†Π΅Π½ΠΈΡ‚Π΅ кусочСк ΠΊΠΎΠ΄Π° ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΡ€ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:

ΠŸΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΎΠΉ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Β«ΡΡ‡Π°ΡΡ‚ΡŒΡΒ» Π±Ρ‹Π»ΠΎ появлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ __autoload. Π‘ΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½Π΅Π΅, это Π±Ρ‹Π»Π° Π΄Π°ΠΆΠ΅ Π½Π΅ опрСдСлСнная функция, эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ сами, ΠΈ ΡƒΠΆΠ΅ с Π΅Ρ‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π½Π°ΠΌ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ класса. ЕдинствСнным ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ ΡΡ‡ΠΈΡ‚Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ класса Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ создан ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ класса (Ρ‚.Π΅. myClass Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π° myClass.php). Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ __autoload() (взят ΠΈΠ· ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΊ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ руководству):

Класс ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ:

Π€Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹ΠΉ класс:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… с Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ β€” ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚Π΅ сторонний ΠΊΠΎΠ΄, Π° Ρ‚Π°ΠΌ ΡƒΠΆΠ΅ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ прописал Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ __autoload() для своСго ΠΊΠΎΠ΄Π°, ΠΈ вуаля:

Ну Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° ΠΏΡ€ΠΎΡΡΠ½ΠΈΠ»Π°ΡΡŒ, хотя ΠΏΠΎΠ³ΠΎΠ΄ΠΈΡ‚Π΅, всС зарСгистрированныС Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ становятся Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ ΠΈΡ… рСгистрации, соотвСтствСнно, Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π½Π°Ρ…ΠΈΠΌΠΈΡ‡ΠΈΠ» Π² своё Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ΅, Ρ‚ΠΎ вмСсто ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ получится ΠΎΡ‡Π΅Π½ΡŒ нСприятный Π±Π°Π³. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ, взрослыС ΡƒΠΌΠ½Ρ‹Π΅ дядьки описали стандарт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ сторонниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π³Π»Π°Π²Π½ΠΎΠ΅ Ρ‡Ρ‚ΠΎΠ±Ρ‹ организация классов Π² Π½ΠΈΡ… соотвСтствовала стандарту PSR-0 (устарСл ΡƒΠΆΠ΅ Π»Π΅Ρ‚ 10 ΠΊΠ°ΠΊ) ΠΈΠ»ΠΈ PSR-4. Π’ Ρ‡Ρ‘ΠΌ ΡΡƒΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ описанных Π² стандартах:

ПолноС имя ΠΊΠ»Π°ΡΡΠ°ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ имёнБазовая Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ
\Acme\Log\Writer\File_WriterAcme\Log\Writer./acme-log-writer/lib/./acme-log-writer/lib/File_Writer.php
\Aura\Web\Response\StatusAura\Web/path/to/aura-web/src//path/to/aura-web/src/Response/Status.php
\Symfony\Core\RequestSymfony\Core./vendor/Symfony/Core/./vendor/Symfony/Core/Request.php
\Zend\AclZend/usr/includes/Zend//usr/includes/Zend/Acl.php

Различия этих Π΄Π²ΡƒΡ… стандартов, лишь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ PSR-0 ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ старый ΠΊΠΎΠ΄ Π±Π΅Π· пространства ΠΈΠΌΡ‘Π½ (Ρ‚.Π΅. Π΄ΠΎ вСрсии 5.3.0), Π° PSR-4 ΠΈΠ·Π±Π°Π²Π»Π΅Π½ ΠΎΡ‚ этого Π°Π½Π°Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΌΠ°, Π΄Π° Π΅Ρ‰Ρ‘ ΠΈ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠΉ влоТСнности ΠΏΠ°ΠΏΠΎΠΊ.

Благодаря этим стандартам, стало Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ появлСниС Ρ‚Π°ΠΊΠΎΠ³ΠΎ инструмСнта ΠΊΠ°ΠΊ composer β€” ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для PHP. Если ΠΊΡ‚ΠΎ пропустил, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Π΄ΠΎΠΊΠ»Π°Π΄ ΠΎΡ‚ pronskiy ΠΏΡ€ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ инструмСнт.

PHP-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΡ

Π•Ρ‰Ρ‘ Ρ…ΠΎΡ‚Π΅Π» Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ошибки всСх, ΠΊΡ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π΄ΠΈΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π° для сайта Π² ΠΎΠ΄Π½ΠΎΠΌ index.php ΠΈ Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ это MVC-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ:

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡˆΡŒ Π½Π° ΠΊΠΎΠ΄, ΠΈ Ρ‚Π°ΠΊ ΠΈ хочСтся Ρ‡Π΅Π³ΠΎ-Π½ΠΈΡ‚ΡŒ врСдоносного Ρ‚ΡƒΠ΄Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ:

Вторая «стоящая» ΠΌΡ‹ΡΠ»ΡŒ, это ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ:

Π’Ρ€Π΅Ρ‚ΡŒΡ, Π½ΠΎ Π½Π΅ послСдняя модификация ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, это использованиС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ open_basedir, с Π΅Ρ‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ PHP Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:

Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹, данная Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° влияСт Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ², Π½ΠΎ ΠΈ Π½Π° всю Ρ€Π°Π±ΠΎΡ‚Ρƒ с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой, Ρ‚.Π΅. Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π΄Π°Π½Π½ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π°Π±Ρ‹Π»ΠΈ Π²Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, Π½ΠΈ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π½ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ (хотя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ is_uploaded_file() ΠΈ move_uploaded_file() ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΎΠΉ для Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²).

КакиС Π΅Ρ‰Ρ‘ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ? Π£ΠΉΠΌΠ° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ², всё зависит ΠΎΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ вашСго прилоТСния.

Π₯ΠΎΡ‚Π΅Π» Π΅Ρ‰Ρ‘ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ сущСствовании «чудСсной» Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ allow_url_include (Ρƒ Π½Π΅Ρ‘ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ allow_url_fopen), ΠΎΠ½Π° позволяСт ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ PHP Ρ„Π°ΠΉΠ»Ρ‹, Ρ‡Ρ‚ΠΎ ΠΊΡƒΠ΄Π° ΠΊΠ°ΠΊ опаснСй для вашСго сСрвСра:

Π£Π²ΠΈΠ΄Π΅Π»ΠΈ, Π·Π°ΠΏΠΎΠΌΠ½ΠΈΠ»ΠΈ, ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ, Π±Π»Π°Π³ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ. Данная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Π°ΠΌ потрСбуСтся Ρ‡ΡƒΡ‚ΡŒ Ρ€Π΅ΠΆΠ΅, Ρ‡Π΅ΠΌ Π½ΠΈΠΊΠΎΠ³Π΄Π°, Π²ΠΎ всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях Π·Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния, Π³Π΄Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ части прилоТСния ΠΎΠ±Ρ‰Π°ΡŽΡ‚ΡΡ посрСдством API.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Данная ΡΡ‚Π°Ρ‚ΡŒΡ β€” основа-основ Π² PHP, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΈΠ·ΡƒΡ‡Π°ΠΉΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, выполняйтС задания ΠΈ Π½Π΅ Ρ„ΠΈΠ»ΠΎΠ½ΡŒΡ‚Π΅, Π·Π° вас Π½ΠΈΠΊΡ‚ΠΎ ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

Π­Ρ‚ΠΎ рСпост ΠΈΠ· сСрии статСй Β«PHP для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…Β»:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *