0

これはおそらくばかげているようです。達成不可能な場合は、お知らせください。
だから:単純なホームネットワークファイル共有サーバー用にRaspbianとnginxを実行しているRasperry Pi(RPi)があります。私は主に学習のためにこれを行い、まっすぐに飛び込みました。とにかく、私のログインシステムは次のとおりです。

login.html:

<html>
...
<form action="cgi-bin/loginHandler.php">
    <label for="username">Username:</label>
    <input name="username">
    <br/>
    <label for="username">Password:</label>
    <input name="password">
    <input name="button" type="submit" value="Submit">
</form>
...
</html>

cgi-bin/loginHandler.php:

<?php
exec("./login.rb $arg1 $arg2")
?>

cgi-bin/login.rb:

#!/usr/bin/ruby1.9.1
#update-alternatives changed "ruby" to "ruby1.9.1"

cmdArray = Array.new

ARGV.each do |a|
    cmdArray.push a
end

#backwards because I used push
if cmdArray[1] == "/u/afdsadf" and cmdArray[0] == "/r/unixporn"
    htmlFile = File.new("loggedIn.html", "w+")
    htmlFile.puts("<html><head></head><body>You are now logged in!</body></html>")
else
    htmlFile = File.new("notLoggedIn.html", "w+")
    htmlFile.puts("<html><head></head><body>You are now logged in!</body></html>")
end

「loggedIn.html」または「notLoggedIn.html」が確実に存在しない cgi-bin ディレクトリを確認したため、Ruby がエラーをスローしているか、まったく実行されていません。繰り返しになりますが、そもそも PHP を使用することはおそらく悪い考えでした。おそらくmethodフォーム自体にも a が必要ですが、何を使用すればよいかわかりません。

4

1 に答える 1

0

代わりに絶対パスを使用してみてください。

exec("/path/to/login.rb $arg1 $arg2")

または、明示的に ruby​​ を呼び出します。

exec("/usr/bin/ruby /path/to/login.rb $arg1 $arg2")

開こうとしているファイルについても同じです。

htmlFile = File.new("/path/to/loggedIn.html", "w+")
htmlFile = File.new("/path/to/notLoggedIn.html", "w+")
于 2013-09-15T22:36:27.840 に答える