Как найти исполняемый файл php

Обновлено: 03.07.2024

Небольшая шпаргалка для начинающих, которая лежала раньше на другом моём сайте.

php Как узнать имя исполняемого файла?

Имя исполняемого файла вместе с путем до него от корневого каталога вернет константа __FILE__
<?
echo __FILE__;
?>

php Как узнать домен сервера?

Узнать домен сервера из php можно с помощью переменной окружения $_SERVER
<?
echo $_SERVER['SERVER_NAME'];
?>

php Как узнать ip сервера?

Узнать ip сервера из php можно с помощью переменной окружения $_SERVER
<?
echo $_SERVER['SERVER_ADDR'];
?>

php Как узнать размер файла?

Размер файл можно узнать с помощью функции filesize()
<?
echo filesize('file.txt');
?>

php Как узнать тип переменной?

Строковое представление типа переменной возвращает функция gettype()
<?
$a = 'is string';
echo gettype('$a');
?>

php Как узнать браузер пользователя?

php Как узнать текущее время?

Узнать текущее время из php можно так
<?
echo date('h:i:s');
?>

php Как узнать путь до текущего исполняемого файла?

Путь до текущего исполняемого файла хранится в константе __DIR__
<?
echo __DIR__;
?>

php Как узнать текущую дату?

Одной из основных функций для работы с датами в php является date() необходимым параметром для которой является строка форматирования. По умолчанию date() возвращает текущие дату и время, если не задан второй парамерт timestamp.

php Как узнать адрес(url) текущей страницы?

Узнать адрес(url) текущей страницы из php можно с помощью переменной окружения $_SERVER
<?
$current_uri = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
?>

php Как узнать версию php?

Версию php можно узнать с помошью команды
<?
phpinfo();
?>

Или из константы PHP_VERSION
<?
echo PHP_VERSION;
?>

php Как узнать ip?

Узнать ip из php можно с помощью переменной окружения $_SERVER
<?
$ip = $_SERVER['REMOTE_ADDR'];
?>

php Как узнать ASCII код символа?

ASCII код символа можно узнать с помощью функции ord()
<?
$code = ord('a'); // узнаем код символа "a"
echo $code;
?>

php Как узнать символ по ASCII коду?

Узнать символ по ASCII коду можно с помощью функции chr()
<?
$symbol = chr(97); // узнаем символ с кодом 97
echo $symbol;
?>

php Как узнать цвет пикселя на картинке?

В php цвет пикселя узнать можно с помощью связки функций imagecolorat() и imagecolorsforindex()

<?
$image = imageCreateFromJpeg('image.jpg'); // создаем объект изображения

$x = 10; // координата x точки
$y = 15; // координата y точки

// узнаем индекс цвета в указанной точке
$color = imagecolorat($image, $x, $y);

// узнаем информацию о цвете по его индексу
$color_info = imagecolorsforindex ($image, $color)

// выводим инфорацию о цвете в формате rgba
print_r($color_info);
?>

Я хочу, чтобы внутренний скрипт запускался с той же версией php. В Perl я бы использовал $^X чтобы получить исполняемый файл perl. Кажется, в PHP нет такой переменной?

прямо сейчас, я использую $_SERVER['_'] , потому что bash (и zsh) устанавливают переменную окружения $_ до последнего запуска программа. Но я бы предпочел не полагаться на идиому, специфичную для оболочки.

обновление: различия в версиях - это только одна проблема. Если PHP не находится в PATH, например, или не является первой версией, найденной в PATH, предложения по поиску информации о версии не помогут.

кроме того, csh и варианты, похоже, не устанавливают $_ переменная среды для их процессов, поэтому обходной путь там неприменим.

обновление 2: я был с помощью $_SERVER['_'] , пока я не обнаружил, что он не делает правильную вещь под xargs (который имеет смысл. zsh задает команду, которую он пробежал, что xargs , а не php5 и xargs не изменяет переменную). Возврат к использованию:

стоит отметить, что теперь в PHP 5.4+ вы можете использовать предопределенную константу -PHP_BINARY:

PHP_BINARY

задает двоичный путь PHP во время выполнения скрипта. Доступен начиная с PHP 5.4.

на моем сервере у меня php 5.3.14.

Я нашел предопределенную константу: PHP_BIN_DIR

тогда, предположим, что имя файла исполняемого файла всегда "php", $php_cmd = PHP_BIN_DIR.'/php' укажите на мой исполняемый файл PHP.

хорошо, так что это уродливо, но он работает на Linux:

Я попробую работать над версией Windows позже.

редактировать

не похоже, что есть простой способ сделать это в Windows. Некоторые исполняемые файлы Windows, такие как tasklist может дать вам имя исполняемого файла, но не полный путь к тому, где находится исполняемый файл. Я смог найти только примеры для поиска полного пути, заданного PID для C++, AutoHotkey и как. Если у кого-нибудь есть предложения, где еще я могу посмотреть, дайте мне знать.

PS: чтобы получить PID в PHP для Windows, вам, по-видимому, нужно позвонить getmypid().

можно использовать phpversion() чтобы получить текущую версию PHP перед выполнением" внутреннего " скрипта.

есть ли что-нибудь полезное в $_ENV ?

этот ответ был полезен для отслеживания местоположения php: Как получить путь к php BIN из PHP?

Это также Windows и linux дружественные :)

вы можете попробовать и проанализировать результат phpinfo ().

Я думаю, что bestconstant PHP_BINARY. С PHP 5.5.12

Я знаю, что этот вопрос немного староват, но он появился во время поиска более короткого способа сделать это.

к сожалению, я не могу найти более короткий путь, но это работает довольно хорошо и совместимо с несколькими ОС/PHP.

$lookIn, вероятно, может быть расширен, чтобы включить более общие места.

Изнутри программы PHP я хочу знать местоположение исполняемого файла. Для этой цели Perl имеет $^X . Есть ли эквивалент в PHP?

Это значит, что он может выполнять дочерний PHP-процесс, используя сам (а не жесткий код, путь или предположить, что "php" верен).

UPDATE

Вещи, которые я пробовал и не работаю:

  • $_SERVER['_'] выглядит так, как я хочу из командной строки, но на самом деле из переменной среды, установленной оболочкой последней исполняемой программы. При запуске с веб-сервера это двоичный файл веб-сервера.
  • which php не будет работать, потому что двоичный файл PHP не гарантированно будет таким же, как на веб-сервере PATH .

Константа PHP_BINDIR предоставляет каталог, в котором двоичный файл php

Да, $_SERVER['_'] это то, о чем вы говорите, или так близко, как есть. Причина, по которой вы получаете двоичный код веб-сервера при запуске из Интернета, заключается в том, что /usr/bin/php не имеет никакого отношения к выполнению веб-сервера; то, что он работает, является отдельным SAPI. Нет ничего из веб-экземпляра PHP, чтобы указать на /usr/bin/php , потому что нет никаких причин для этого.

Константа PHP_BINDIR , вероятно, самая простая вещь для использования; следующая лучшая вещь, которую я мог бы придумать, - это в основном повторное создание этого пути bindir из настройки конфигурации extension_dir :

В нем есть регулярное выражение, поэтому оно больше похоже на ваш собственный perl (!), но в остальном это не особенно оптимально.

В PHP5.4 вы можете использовать константу PHP_BINARY, она не будет работать через mod_php или аналогичную, но будет через CGI и т.д.

Для более ранних версий PHP readlink('/proc/self/exe'); , вероятно, будет хорошо, снова он не будет работать через mod_php.

В зависимости от того, как установлен php, вы CANT можете найти исполняемый файл php. если php работает как модуль для веб-сервера, такого как модуль apache, тогда нет двоичного кода, который вы можете вызвать. вы можете заглянуть в php_info(), в котором перечислены все. также может быть путь к php. внутри этого пути вы можете принять двоичный файл php.

но почему вы хотите вызвать дополнительный процесс? вы можете выполнять другие php файлы командой include или eval. нет причин порождать новый процесс.

Я искал исполняемый файл php7 на своем mac (OSX El Capitan), чтобы настроить и установить xdebug (необходимый для поиска правильной версии phpize для запуска). Ни одно из решений, которые я нашел, не работало для меня, поэтому я просто решил найти его:

Я знал (из phpinfo()), что я запускал php7, поэтому я смог вывести правильный каталог из опций, представленных find.

Изнутри программы PHP я хочу знать местоположение исполняемого файла. Для этой цели Perl имеет $^X . Есть ли эквивалент в PHP?

Это значит, что он может выполнять дочерний PHP-процесс, используя сам (а не жесткий код, путь или предположить, что "php" верен).

UPDATE

Вещи, которые я пробовал и не работаю:

    $_SERVER['_'] выглядит так, как я хочу из командной строки, но на самом деле из переменной среды, установленной оболочкой последней исполняемой программы. При запуске с веб-сервера это двоичный файл веб-сервера.
    which php не будет работать, потому что двоичный файл PHP не гарантированно будет таким же, как на веб-сервере PATH .

Константа PHP_BINDIR предоставляет каталог, в котором двоичный файл php

Да, $_SERVER['_'] это то, о чем вы говорите, или так близко, как есть. Причина, по которой вы получаете двоичный код веб-сервера при запуске из Интернета, заключается в том, что /usr/bin/php не имеет никакого отношения к выполнению веб-сервера; то, что он работает, является отдельным SAPI. Нет ничего из веб-экземпляра PHP, чтобы указать на /usr/bin/php , потому что нет никаких причин для этого.

В PHP5.4 вы можете использовать константу PHP_BINARY, она не будет работать через mod_php или аналогичную, но будет через CGI и т.д.

Для более ранних версий PHP readlink('/proc/self/exe'); , вероятно, будет хорошо, снова он не будет работать через mod_php.

Константа PHP_BINDIR , вероятно, самая простая вещь для использования; следующая лучшая вещь, которую я мог бы придумать, - это в основном повторное создание этого пути bindir из настройки конфигурации extension_dir :

В нем есть регулярное выражение, поэтому оно больше похоже на ваш собственный perl (!), но в остальном это не особенно оптимально.

В зависимости от того, как установлен php, вы CANT можете найти исполняемый файл php.
если php работает как модуль для веб-сервера, такого как модуль apache, тогда нет двоичного кода, который вы можете вызвать.
вы можете заглянуть в php_info(), в котором перечислены все.
также может быть путь к php. внутри этого пути вы можете принять двоичный файл php.

но почему вы хотите вызвать дополнительный процесс?
вы можете выполнять другие php файлы командой include или eval.
нет причин порождать новый процесс.

Я искал исполняемый файл php7 на своем mac (OSX El Capitan), чтобы настроить и установить xdebug (необходимый для поиска правильной версии phpize для запуска). Ни одно из решений, которые я нашел, не работало для меня, поэтому я просто решил найти его:

Я знал (из phpinfo()), что я запускал php7, поэтому я смог вывести правильный каталог из опций, представленных find.

Читайте также: