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

Поэтому при загрузке страницы на веб-сайт я запускаю скрипт 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

Решение

Так что да, это была проблема с правами доступа, PHP работал как www-данные, и у него не было разрешения на запись, поэтому он выдавал ошибку, которую я не улавливал, используя свой 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

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]