Как я могу принудительно использовать версию PHP для командной строки?

#php #shell #cron #command-line-interface

#php #оболочка #cron #интерфейс командной строки

Вопрос:

Я размещен с 1and1.com , и я настроил свои файлы для анализа с помощью php5 .htaccess .

Но это работает только в apache, а не в командной строке, которая по умолчанию использует php4 по умолчанию для сервера.

Итак, в настоящее время я не могу настроить задания cron для запуска моего кода как php5. Есть идеи?

Ответ №1:

В соответствии с https://community.1and1.com/using-php-composer-at-1and1 /, создайте файл .profile в вашем корневом проекте и добавьте строку :

 alias php='/usr/bin/php5.5-cli'
  

Это работает для меня.
Выйдите из системы и снова войдите в SSH и выполните :

 php -v
  

Результат :

PHP 5.5.32 (cli) (построен: 15 февраля 2016 16:13:44)

Ответ №2:

Если оба установлены, все, что вам нужно сделать, это запустить скрипт, используя соответствующий двоичный файл PHP.

Так, например:

  // Runs using the PHP binary located at /usr/bin/php
 * * * * * root /usr/bin/php -n "/path/to/script.php"
  

или

  // Runs using the PHP binary located at /var/php5
 * * * * * root /var/php5 -n "/path/to/script.php"
  

Все, что вам нужно знать, это полный путь к файловой системе двоичных файлов PHP CLI и вызвать соответствующий для запуска вашего кода.

Ответ №3:

Если вы можете выполнять PHP-скрипты непосредственно в оболочке, например:

 $ script.php
  

вы можете указать двоичный файл, который будет выполнять скрипт в его первой строке:

 #!/usr/bin/php
<?php
  

Эта строка называется shebang. Строка может отличаться в вашей системе, вам нужно знать полный путь к файловой системе двоичного файла PHP CLI, который вы хотите использовать для этого скрипта.

Если вы запустите этот файл в оболочке, будет использоваться указанный двоичный файл. То же самое для cron.

Если вы запустите этот файл через свой веб-сервер, PHP автоматически удалит эту строку.

Смотрите также: Особенности: использование PHP из командной строки

Ответ №4:

должно быть два каталога PHP, и один из них должен быть каталогом по умолчанию. попробуйте узнать путь к php5 из корня вашего сервера и используйте полный путь при выполнении задания cron.

Комментарии:

1. whereis php может помочь с поиском ваших php-местоположений

2. which php или which php5.5-cli как командная строка 1and1 не имеет whereis

Ответ №5:

Это еще один подход к принудительному использованию PHP из командной строки на 1and1.

Войдите в систему с помощью ssh на своем сервере и создайте новый файл, вызываемый .profile там, вы напишете следующую строку alias php='/usr/local/bin/php5' , снова войдите в систему с помощью ssh и проверьте версию php php -v , если увидите, что версия теперь 5.

Ответ №6:

Я, наконец, получил эту работу. Проблема была в несколько раз.

Во-первых, используемый PHP был в /etc/bin вместо версии MAMP. Я смог изменить это и вместо этого использовать версию MAMP.

Во-вторых, чтобы использовать php через CLI, вы должны убедиться, что используете ПОЛНЫЙ путь к php, а не только сам php. Т.е. Используйте /MAMP/bin/php/php5.3.x/php в вашем вызове exec(). Теперь это работает для меня.

Вы можете ознакомиться с моей сутью здесь …https: //gist.github.com/1861487

Комментарии:

1. Вам не нужно использовать полный путь для запуска php в CLI (я уверен в этом, запустив php из терминала на моем Mac с помощью MAMP, XAMPP и стандартной установки OSX.) Причина, по которой вы это сделали, была либо (в зависимости от полученной ошибки): а) У вас нет каталога bin в вашей переменной PATH env (что приводит меня каждый раз), либо б) у вас установлено несколько версий php, и первая в пути была не той, которую вы хотели. Для первого вы можете подтвердить, выполнив следующее перед вызовом php: PATH=$PATH:/MAMP/bin

2. Это вообще не отвечает на вопрос. OP спрашивал о среде 1and1, которая не имеет ничего общего с MAMP.

Ответ №7:

По крайней мере, в Linux вы также можете указать желаемую версию PHP в первой строке вашего скрипта следующим образом:

 #!/usr/bin/php5.6
<?php
  echo 'This is PHP version ' . phpversion() . "n";
?>
  

Сделайте ваш скрипт исполняемым и укажите задание cron следующим образом:

 # Just runs the script, which itself cares for the right php version
* * * * * root "/path/to/script.php"