За последние 24 часа нас посетили 17720 программистов и 1651 робот. Сейчас ищут 1482 программиста ...

путь к файлу в команде system

Тема в разделе "PHP для новичков", создана пользователем Dimasick, 10 апр 2012.

  1. Dimasick

    Dimasick Активный пользователь

    С нами с:
    30 апр 2011
    Сообщения:
    57
    Симпатии:
    0
    Как правильно писать путь к файлу в команде system?
    Пробую вот так:
    Код (Text):
    1. system("http://127.0.0.1/xxxx echo.php > /dev/null &");
    2. system("/xxxx echo.php > /dev/null &");
    но не хочет работать.
     
  2. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    В функцию system надо передавать сначала имя программы, потом параметры, как везде.
     
  3. Dimasick

    Dimasick Активный пользователь

    С нами с:
    30 апр 2011
    Сообщения:
    57
    Симпатии:
    0
    Вопрос был не об этом, я и так передаю сначала имя программы, потом параметры. В инете нашел пример, где написано, что работает
    Код (Text):
    1. system("/usr/local/bin/php echo.php > /dev/null &");
    но не могу понять, как писать этот путь. У меня на машине я вижу два пути - системный (под виндой) это С:\PHP\www\xxxx\ echo.php и тот, что отображается в браузере при запущеном апаче: http://127.0.0.1/xxxx/echo.php
    А как этот путь записать в файле index.php (лежит рядом с echo.php) в команде system?
     
  4. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Вы не помните?
    Вот этот пример
    Код (Text):
    1. system("/usr/local/bin/php echo.php > /dev/null &");
    работает потому, что на машине есть директория "/usr/local/bin/", в которой есть исполняемый файл "php", которому передали параметр "echo.php".
    Вы не передаёте сначала имя программы, вы это только утверждаете.
     
  5. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Код (PHP):
    1. system('"C:\\PHP\\php.exe" -f "С:\\PHP\\www\\xxxx\\echo.php"'); 
     
  6. Dimasick

    Dimasick Активный пользователь

    С нами с:
    30 апр 2011
    Сообщения:
    57
    Симпатии:
    0
    Добавлено спустя 52 секунды:
    Ща попробую.
     
  7. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Код (PHP):
    1. $path = dirname(__FILE__);
    2. system('"C:\\PHP\\php.exe" -f "' . $path . '\\echo.php"'); 
     
  8. Dimasick

    Dimasick Активный пользователь

    С нами с:
    30 апр 2011
    Сообщения:
    57
    Симпатии:
    0
    Вот только файла php.exe у меня нет :( Есть EasyPHP.exe и я пытаюсь сделать так:
    Код (Text):
    1. $path = dirname(__FILE__);
    2. system('"C:\\PHP\\EasyPHP.exe" -f "' . $path . '\\echo.php"');
    но не хочет работать...
     
  9. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Ну, не знаю, что там у тебя за PHP такой странный, что в нём нет php.exe, зато есть какой-то EasyPHP.exe... Я такого не видел.
    А что ты имеешь в виду под "не хочет работать"? То, что ты не видишь на экране в браузере того, что должен отобразить твой echo.php?
     
  10. Dimasick

    Dimasick Активный пользователь

    С нами с:
    30 апр 2011
    Сообщения:
    57
    Симпатии:
    0
    Нет, echo.php не должен ничего отобразить, он должен создать файл и записать в него число. Если запускаю echo.php на прямую, то он создает файл, а мне надо вызвать echo.php из файла index.php.
    EasyPHP.exe - ну это такой мини-сервер (апач+мускул). Запускается именно программой EasyPHP.exe. Как же мне запускать из index.php лежащий рядом echo.php?... И нужно именно запустить, а не подключить (т.е. include и require не подходят).
     
  11. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Возможно, также, что он запускается, но пытается создать этот файлик с числом не там, где ты ожидаешь :) При запуске скриптов из консоли - используй везде в скриптах полные пути.
     
  12. Dimasick

    Dimasick Активный пользователь

    С нами с:
    30 апр 2011
    Сообщения:
    57
    Симпатии:
    0
    Прошерстил весь диск - нигде он ничего не создал :( Как же из одного пхп-файла мне запустить другой?
     
  13. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    У меня запускается так, как я описал выше. И скрипт создаёт и удаляет файлы, всё работает. Почему у тебя не запускается - непонятно.
     
  14. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а вы в консоли пробовали сначала выполнить?
     
  15. Dimasick

    Dimasick Активный пользователь

    С нами с:
    30 апр 2011
    Сообщения:
    57
    Симпатии:
    0
    Даже не знаю, о какой консоли речь (у меня EasyPHP - см http://ru.wikipedia.org/wiki/EasyPHP)
    Поставлю вопрос иначе: как (максимально проще) из одного пхп-файла (index.php) запустить (в определенном месте кода в index.php) другой пхп-файл (echo.php) и при этом продолжить работу (тем же index.php) вне зависимости от того, чем закончилась работа у echo.php (даже если echo.php вызвал fatal error)? Все, что нашел в инете про многопоточность на PHP (например, http://forum.antichat.ru/thread98635.html) - как-то очень сложно.
     
  16. Dimasick

    Dimasick Активный пользователь

    С нами с:
    30 апр 2011
    Сообщения:
    57
    Симпатии:
    0
    Вот нашел FreeBSD серв с системным путем /usr/local/bin/ и залил туда два файла:
    index.php
    Код (Text):
    1.  
    2. <?php
    3. system("/usr/local/bin/php echo.php");
    4. echo "done";
    5. ?>
    и echo.php
    Код (Text):
    1. <?php
    2.     $file_name="tmp2.tmp";
    3.     $fp=fopen($file_name,"w");
    4.     fputs($fp, "0");
    5.     fclose($fp);
    6. ?>
    При запуске index.php выводит done, но результата работы echo.php (должен создать файл tmp2.tmp и записать в него 0) не наблюдаю. В чем может быть проблема?
     
  17. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Отдельно файл echo.php запускается из браузера, например?
     
  18. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Попробуй указать также полный путь к скрипту echo.php, где там он у тебя лежит.
     
  19. Dimasick

    Dimasick Активный пользователь

    С нами с:
    30 апр 2011
    Сообщения:
    57
    Симпатии:
    0
    Да, запускается и работает правильно (создает файл и записывает туда число).

    Добавлено спустя 43 секунды:
    Ок, ща попробую.
     
  20. Dimasick

    Dimasick Активный пользователь

    С нами с:
    30 апр 2011
    Сообщения:
    57
    Симпатии:
    0
    На локальной машиине заработало вот так:
    index.php
    Код (Text):
    1. <?php
    2.              system("php  -f ".dirname(__FILE__)."\echo.php");
    3. ?>