Cron + сохранить в формате unix

deepslam

Новичок
Cron + сохранить в формате unix

Добрый день!
Написал скрипт для запуска в cron, только возникла проблема : в чем мне можно сохранить файл в формате Unix?
P.S. Я использую HomeSite, но не встречал в нем такой возможности.
 

deepslam

Новичок
В общем скрипт сам по себе работает нормально.
В cron прописан тоже корректно:
25 0 * * * /<путь к сайту>/robot.php
В начале файла стоит
#!/usr/local/bin/php (взял с инструкций на сайте хостинга)
Права на файл - 700 (тоже с сайта хостинга)

Далее там написано:

Если Вы действительно правильно указали путь в crontab, а скрипт не запускается, проверьте формат файла скрипта. Скрипты запускаемые через crontab должны быть сохранены в формате Unix. Имеет значение формат конца строки. Он должен быть таким как принято в системах Unix - LF, вместо CRLF использующегося в DOS и Windows. Закачивайте скрипты по ftp в текстовом (ascii) режиме (не бинарном).
Получается проблема в неправильном сохранении файла, как я понял.

-~{}~ 01.10.06 11:55:

Нашел нужную опцию в HomeSite :) Щас попробую, может запустится )))

-~{}~ 01.10.06 12:02:

блин, все равно не запускается (((

-~{}~ 01.10.06 12:09:

А как в кроне можно узнать путь к рабочей папке, аналог $_SERVER["DOCUMENT_ROOT"] есть там???
 

Андрейка

Senior pomidor developer
шел там на хостинге есть?

рабочая папка !== document root
а функция про рабочую папку есть в мануале... скорее всего в файловых функциях/работе с каталогом (поиск по слову dir поможет найти направление)
 

deepslam

Новичок
да, шелл есть
функцию сейчас буду искать
И еще вопрос: массив $_SERVER не доступен из крона?

-~{}~ 01.10.06 12:29:

функция как я понял - getcwd();
А как узнать адрес сайта? Намекните плиииз!
 

Андрейка

Senior pomidor developer
1. из шела /usr/local/bin/php /path/to/script.php и проверь работает или нет (и работает ли без #!/.....)
2. права на скрипт
3. записать умную строку в кроне, если заработает
4. написать var_dump($_SERVER), запустить скрипт в кроне и посмотреть доступен ли $_SERVER и что в нем имеется из нужного

А как узнать адрес сайта? Намекните плиииз!
адрес ЧЕГО?????
 

deepslam

Новичок
Адрес сайта, но его узнать не получицца (
Массив $_SERVER доступен, путь к скрипту находится в $_SERVER["PHP_SELF"], вытаскиваю путь с помощью dirname($_SERVER["PHP_SELF"]). Собственно все нормально, но теперь интересует - доступен ли $_SERVER["PHP_SELF"] на всех хостингах, либо это частный случай?

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

pavel31

Новичок
1. dirname ($_SERVER["PHP_SELF"]). -- не надо ;)
лучше dirname(__FILE__)

2. Сохранять ФАРом Shift+F2 - типа спрашивает, в каком виде.
3. А шо крону не всеравно? Вроде всеравно таки!
 

ys

отодвинутый новичок
deepslam

У крона, корневая папка (в общем случае) это: /
Причем почти всегда.
 

deepweb

Новичок
На моём примере...

1. vixe-cron
в файле crontab в директории etc
содержание файла
*/10 * * * * root rm - f дале путь да диры с даниями

В файле задачи
php /home/www/сфайлом который выполнять/имя файла.php

1. Для проверки в скрипт пихни echo и выполни из консоли
php /home/www/сфайлом который выполнять/имя файла.php

На экране увидишь результат работает тогда добавляй в задачи.


1. Теперь почему может не работать 1 пути includ в файле указаны не верно. (проверь не один раз пробуй менять пути)

2. Очень часто забывают #!/usr/local/bin/php

3. Права на файл 700

4. Естественно многие хостеры запрещают вывод любой информации в задачах убери все echo и print

5. /<путь к сайту>/robot.php проверь....

6. Читай лог ошибок.

7. Если не помогло у хостера есть сапорт который раскроет суть проблемы!


А так же продемонстрируй скрипт многие серверные переменные (переменные окружения) могут быть обработанны не коректно!!

Выполни echo "$_SERVER["DOCUMENT_ROOT"]"; и правильно укажи пути везде вручную.
 

deepslam

Новичок
deepweb
Огромное спасибо за подсказки!
Скрипт мой заработал корректно, бэкапы шлет, ссылки проверяет )))
Но вот вопрос теперь в том, что это ПО будут ставить другие люди, как сделать, чтобы скрипт автоматом корректно выполнялся на любом хостинге? Т.е. грубо говоря вопрос стоит в определении домашней директории, путь к php человек будет прописывать руками, также как и саму задачу в кроне. Возможно ли какое то общее решении для определения пути к корневой папке сайта, где лежит robot.php?
 

ys

отодвинутый новичок
deepweb

> 4. Естественно многие хостеры запрещают вывод любой информации в задачах убери все echo и print

Нет, это просто некоторые не понимают, куда происходит этот вывод. Прочтение man 5 crontab, помогает это понять.

> Выполни echo "$_SERVER["DOCUMENT_ROOT"]";

Какой DOCUMENT_ROOT? Откуда, этот самый cron, его узнает?


deepslam
Если "путь к php человек будет прописывать руками", то почему он не может прописать и путь к корневой папке сайта?
 
Сверху