2012-06-15 4 views
0

В дополнение к моему previous question, еще одна проблема появилась, и я решил сделать новый вопрос для него:PHP + Run Баш скрипт для создания файла

я в настоящее время вызова PHP скрипт, который запускает чем Баш скрипт. PHP скрипт выглядит следующим образом:

chdir('/home/'); 
$output = shell_exec('./do.sh'); 
echo "<pre>$output</pre>"; 

do.sh содержит:

#! /bin/bash 

echo 12; 
dd if=/dev/urandom of=test.test bs=1048576 count=2 

Проблема заключается в следующем:

Когда я называю ./do.sh из терминала все работает отлично: test.test является созданный и выход - 12

Однако, когда я его вызываю из своего php-файла, вывод 12 также, но no файл создается. Поскольку я почти ничего не знаю о сценариях bash, я понятия не имею, почему это происходит ...

+5

Возможно, это связано с тем, что пользователь, работающий под управлением PHP, не имеет разрешений на запись в каталоге '/ home /'. Вам нужно будет 'chmod nnn/home', где' nnn' - соответствующая структура разрешений - не забудьте сделать это как можно более ограничительным. Вы можете захотеть взглянуть на принадлежность и членство в группах, чтобы получить наилучшую настройку. Для проверки вы можете «chmod 777/home», и если он работает, тогда вы получите свой ответ. – DaveRandom

+0

Спасибо большое! Я забыл установить правильные разрешения для домашней папки. Я только подумал о фактическом файле php и изменил его разрешение, но не сделал то же самое для папки, в которой он находится! Надеюсь, вы не возражаете, если я отвечу @ dAm2K, так как он также предложил посмотреть разрешения! – Andrej

+0

Не беспокойтесь ... ;-) – DaveRandom

ответ

2

Проверьте, включен ли PHP safe_mode. Вы должны отключить его в файле /etc/php.ini и, очевидно, проверить права файловой системы.

+0

Безопасный режим выключен, а php, а также .sh-файл имеют все права на запись. Однако я не уверен в отношении пользователя (см. Комментарий @DaveRandom). – Andrej

+0

Попробуйте использовать абсолютный путь для dd:/bin/dd if =/dev/urandom of = test.test bs = 1048576 count = 2 – dAm2K

+1

Это были разрешения в конце концов! Большое спасибо! Я забыл установить правильные разрешения для домашней папки. Я только подумал о фактическом файле php и изменил его разрешение, но не сделал то же самое для папки, в которой он находится! – Andrej

Смежные вопросы