我有一個非常奇怪的錯誤。Linux命令(cp,rm)不會在perl腳本中執行。有些作品。但沒有錯誤返回
我運行一個執行linux命令的perl腳本。它們是這樣執行的:
my $err = `cp -r $HTML /tssobe/www/tstweb/$subpath/$HTMLDIR1`;
myLog("$err");
而$ err是空的,這表示命令沒有返回並且錯誤。 (對吧?)
我試圖用exec「」或system()來執行linux命令,但沒有成功。 我試圖改變路徑。相同。
此外,我試圖在一個新的perl腳本中只運行cp命令。有用。 但不是在我的完整的Perl腳本。
在這個Perl腳本中,有些命令正在工作,有些則不行。
劇本昨天工作,今天早上不再。在此期間未做任何更改。
我嘗試了很多東西,如果有人有想法,我會很高興。
編輯: 服務器有很多進程未終止。清理那些解決了問題。 所以這個問題與另一個應用程序有關,但是由於您的意見,我會改進日誌記錄。
您缺少錯誤報告。在腳本的頂部添加'use autodie qw(:all);',當出現錯誤時它會用有用的錯誤消息中止。 – daxim 2012-02-28 10:58:45
要非常小心您用於$ HTML或$ subpath或$ HTMLDIR1變量的輸入 - 如果它們中的任何一個允許通過[shell元字符](http://cwe.mitre.org/data /definitions/78.html),你寫了一個不安全的工具。最好使用['File :: Copy :: Recursive'](http://search.cpan.org/~dmuey/File-Copy-Recursive-0.38/Recursive.pm)或類似的工具來避免使用shell完全。 – sarnold 2012-02-28 11:04:53