Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 6303
Последний выпуск: 19.06.2015

php, cron, переменные

7.3K
23 декабря 2010 года
shureg
67 / / 29.05.2010
Здравствуйте, столкнулся с проблемой, что переменные неработают =))) (понимаю что мысль обсурдна, но давайте подробнее.)

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

собственно сделал так:
2 файла: cron_defines.php и cron_stats.php - лежат в одной дирректории.
запускаю я именно cron_stats.php, а тот в свою очередь первым делом инклудит: cron_defines.php. - в этом файле я создал все функции для работы с бд, обьявил константы и тд.

напрягает следующее строки:

 
Код:
$local_path  = '/var/www/fedor/data/www/*тут мой домен*';
$config_path = $local_path.'/includes/config.php';

function dbconnect()
{
    include($config_path);
}

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

ну так вот выполняю я в PuTTY незамысловатый код (конечноже вошел под рутом и пути все прописаны верно.):
Цитата:

/usr/bin/php5 /var/www/fedor/data/www/*тут мой домен*/cron/jobs/site_stats.php



после чего вижу на экране PuTTY такую ошибку:

Цитата:

Warning: include(): Failed opening '' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/fedor/data/www/*тут мой домен*/cron/jobs/cron_defines.php on line 20



тоесть как видно, выполняется просто include(); , а не: include(/var/www/fedor/data/www/*тут мой домен*/includes/config.php);

--------
попробовал изменить:

 
Код:
function dbconnect()
{
    include($local_path."/includes/config.php");
}

выдало ошибку:

Цитата:

Warning: include("/includes/config.php"): Failed opening '' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/fedor/data/www/*тут мой домен*/cron/jobs/cron_defines.php on line 20



тоесть понятно, что почемуто переменная просто пуста!!!!!!!!!

вариант - вручную прописывать в функции путь есть, но не желателен!!! так как подобных инклудов у меня еще куча, я просто вам их не показал и в стулаче если я перееду или захочу запустить скрипт под другим юзером - мне придется в этих 10 местах и редактировать, а так просто в одном отредактирую и дело в шляпе.

Спасибо за внимание, надеюсь откликнетесь на мою проблему.

243
23 декабря 2010 года
UAS
2.0K / / 19.07.2006
Обычно я пути обозначаю константами, тогда они видны везде и доступны везде.
У вас же проблема в области видимости переменной.
7.3K
23 декабря 2010 года
shureg
67 / / 29.05.2010



Спасибо неподумал =)
ЗАРАБОТАЛО


Цитата: UAS
Обычно я пути обозначаю константами, тогда они видны везде и доступны везде.
У вас же проблема в области видимости переменной.



пробовал константами, непомогло!!!!
делал так:

 
Код:
define(LOCAL_PATH, '/var/www/fedor/data/www/*тут мой домен*');
definе(CONFIG_PATH, LOCAL_PATH.'/includes/config.php');

function dbconnect()
{
    include(CONFIG_PATH);
}


Ошибка была такой:

Цитата:
Warning: include(CONFIG_PATH): Failed opening '' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/fedor/data/www/*тут мой домен*/cron/jobs/cron_defines.php on line 20

243
23 декабря 2010 года
UAS
2.0K / / 19.07.2006
Ещё бы это работало... Ман не поленитесь почитать с описанием функции define
7.3K
23 декабря 2010 года
shureg
67 / / 29.05.2010
Цитата: UAS
Ещё бы это работало... Ман не поленитесь почитать с описанием функции define



просто я на скорую руку отвечал в форуме))))) я там местами поменял внутри define :P, если бы так ошибка когда скрипт писал мне бы варнинг как минимум бы показал

243
23 декабря 2010 года
UAS
2.0K / / 19.07.2006
В принципе скрипт не обязан показывать варнинги, т.к. все зависит от значения error_reporting
8
23 декабря 2010 года
mfender
3.5K / / 15.06.2005
Ко всему вышесказанному добавлю, что если есть желание пользоваться таки переменными по разным причинам (а причины могут быть самые разные, в основном - желание менять значение в ходе работы программы), есть замечательная возможность пользоваться массивом $GLOBALS, где хранятся все переменные, даже если они назначенны в функциях.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог