0
因此,當在網站上加載頁面時,我運行一個C腳本來創建一些文件。我可以運行一個PHP腳本來運行一個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腳本確實運行,所以我在瀏覽器上得到了一些響應,這只是創建文件不起作用的部分。
難道這是我不知道的某種權限嗎?或者路徑相關的問題?
運行Web服務器的用戶是否具有對目錄的讀/寫權限?嘗試以該用戶身份登錄,然後運行腳本! – 2015-03-31 14:16:34
那麼php目前以root身份運行 – matt 2015-03-31 14:17:55
可能是一個權限錯誤。您應始終檢查涉及外部資源的呼叫的返回值,例如打開一個文件。永遠不會取得成功。你的C代碼假設什麼都不會出錯,這是非常糟糕的編碼習慣。不,php不會以root身份運行,除非你以root身份運行你的web服務器(非常非常糟糕的做法)。您的web服務器以root身份啓動,但應該刪除root priv並以不同的用戶身份運行,例如www數據。 – 2015-03-31 14:18:26