Могу ли я запустить скрипт PHP, который запускает скрипт C, который затем создает файл?

0

Поэтому при загрузке страницы на веб-сайте я запускаю сценарий C, который создает некоторые файлы.

Все работает отлично самостоятельно, но вместе я получаю ошибку сегментации.

system('./cScript /var/www/html/someFile.txt', $returnValue);

Сценарий C принимает этот параметр и создает на нем другой файл:

FILE *f;  
f = fopen ('/var/www/html/someFile.bak', "w");  
fprintf (f, "%s", "some content goes here");  
fclose (f); 

Он работает, если я запускаю скрипт C на нем. Он работает, если я запускаю PHP -a и system('./cScript/var/www/html/someFile.txt', $returnValue);

Но это не работает, если я запускаю его через браузер. Сценарий C работает, хотя я получаю от него некоторый отклик в браузере, это просто часть созданного файла, которая не работает.

Может быть, это какое-то разрешение, о котором я не знаю? или проблема, связанная с путями?

  • 0
    Имеет ли пользователь, который запускает веб-сервер, права на чтение / запись в каталоге? Попробуйте войти в систему под этим пользователем, а затем запустите свой скрипт!
  • 0
    Ну php сейчас работает как root
Показать ещё 3 комментария
Теги:
system

1 ответ

1

Так что да, это была проблема разрешений, PHP работал как www-data, и у нее не было разрешения на запись, поэтому она бросала ошибку, которую я не ловил с помощью let-keep-it-extremelly-simple-to-start с кодом.

Может быть исправлено путем предоставления разрешения на www-data:

sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 770 /var/www/html

Это не очень безопасно, хотя и плохая практика так идеально не делает этого. Но если вам нужно затем создать такой каталог, специально предназначенный для хранения этих файлов в иерархии.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню