2013-03-06 28 views
0

我目前使用PHP的插件,就設在這裏的Pygments來做:http://derek.simkowiak.net/pygments-for-php/PHP的exec()的Pygments來做PHP

實際上從該代碼調用Pygments來做該生產線是一個exec()通過:

pygmentize -f html $extra_opts -l $language $temp_name
作爲命令。這一切工作正常,我得到的輸出,並由插件格式化。

我想同時發生的是Pygments創建它的圖像,所以我通過exec()一個類似的命令:

pygmentize -f png $extra_opts -l $language -o $full_image_path/$output_file.png $temp_name
這是我遇到問題的地方。圖像從不出現在預期的文件夾中。

但是,如果我var_dump()那個命令字符串之前我exec()它並採取它並直接從命令行運行它,它工作正常。

我試圖呼應EXEC(「WHOAMI」),它告訴我,PHP用戶是www數據。我試圖給www-data的權限,並將存儲圖片的文件夾的所有權更改爲www-data。我也嘗試將權限更改爲777,以查看會發生什麼,答案是什麼。

有什麼我失蹤了嗎?我正在用盡想法嘗試。謝謝!

編輯:我檢查過的另一件事是exec命令的輸出和返回值。它輸出一個空數組,並返回1作爲返回值。

編輯2:在看到該目錄對於PHP用戶應該是可寫/可讀的之後,pygments是否有權將其寫入特定用戶?我不確定這是否合理,因爲當我自己運行它時它工作正常,事實上,當PHP使用HTML詞法分析器運行它時,它能夠運行。我對Python並不是很有經驗,所以我不知道這是否是一個潛在的問題。

+0

嘗試使用'print()'在調用exec()之前查看構造的命令字符串。這應該告訴你問題是什麼。 – SDC 2013-03-06 15:48:31

+0

會做'var_dump()'會做的事情嗎?我'var_dump($ command)'其中'$ command'是在調用'exec()'之前構造的命令字符串,並且我得到:'pygmentize -f png -O full,style = manni,cssclass = pygmentize_kbOKBd -l php - o /srv/www/path/to/images/uploads/2513732976ad4b7.02729290.png/tmp/pygmentize_kbOKBd'。然後我可以在命令行中自己運行它,並且它工作正常,這就是爲什麼它對我來說很奇怪,我認爲這是一個權限問題,但即使在文件夾777上我似乎也無法修復它我正在使用它。 – 2013-03-06 15:55:54

+0

嗯,是的,'var_dump'在這裏和'print'實現了相同的功能。這個想法是要確認我們正在呼叫我們認爲我們打來的電話。所以,既然這很好,我想它排除了這個想法。 – SDC 2013-03-06 16:00:43

回答

0

結束了與安裝由WWW-root用戶使用該字體的問題。顯然Pygments默認使用的是我爲使用命令行運行的用戶安裝的。

我能夠解決這個問題的方式是運行 exec("$command 2>&1", $out, $code);

額外的2>&1重定向stderr到輸出爲我看到的問題。

$out參數表明Pygments來做被扔在FontNotFound錯誤。

我改變了Pygments來做通過使用命令行中使用的字體:full,style=manni,cssclass=pygmentize_kbOKBd,font_name='DejaVu Sans Mono' -l php -o /srv/www/path/to/images/uploads/2513732976ad4b7.02729290.png /tmp/pygmentize_kbOKBd發現哪些字體我提供給我了。

要查看運行腳本的用戶可以使用哪些字體,我只需在exec()命令中運行fc-list,並將其輸出檢查爲可用字體列表。

0

我想你不能像這樣做。

$output_file.png 

嘗試

$file = $output_file.".png" 

和替代品在EXEC

+0

改變之後,問題仍然存在。我認爲整個字符串與之前和之後生成的字符串相同。傳遞給命令行的exec命令生成的是: 'pygmentize -f png -O full,style = manni,cssclass = pygmentize_kbOKBd -l php -o/srv/www/path/to/images /上傳/ 2513732976ad4b7.02729290.png/tmp/pygmentize_kbOKBd' – 2013-03-06 12:29:04