【PHP】下らねぇ質問はここに 9
■ このスレッドは過去ログ倉庫に格納されています
PHPに関する質問スレです
前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 8
http://mevius.5ch.net/test/read.cgi/tech/1489506082/
次スレは>>980以降
本文の1行目に以下を追加すること
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured 配列にしたhtmlを一つつなぎで
出力するのって
$output= implode("", $html);
ってするのが普通ですか?
他にいい方法ありますか? 出力したいだけなら普通にforeachでいいんじゃないの >>58
ありがとうございます。
とりあえず変数に1つつなぎにしておいとく場合なら
上記のようにimplodeでつなぐという認識で間違いないでしょうか? >>59
どんな感じでhtmlが入ってるかによるけど
出力するときに配列の中にあるやつをエスケープしたりhtmlspecialchars
したり変数を展開したりするんだったらforeachとかあたりの方がいいんじゃね?
テンプレートエンジン使ったほうがいいかもしらんが 配列を順に出力するだけならforeach
配列をくっつけて別の変数にしたいならimplode
implodeしたあとに何かをするわけでないなら
おとなしくforeachで出力すべき phpを7から5にインストールしなおして
php.info()を表示させようとしたんですが
PHP Fatal error: Unknown: Failed opening required '/var/www/html/index.php' (include_path='.:/usr/share/php:/usr/share/pear') in Unknown on line 0
というエラーが出ます
どこがまずいんでしょうか?
OSはubuntu16です >>63
'var/www/html/index.php'
をrequireしようとしたけど
そんなファイルはないぞというエラー
とりあえず
<php
書いてるまんまなので
これを読んで意味が理解できないようではこの先苦労するかも 変なタイミングで送信してすまない
とりあえず
<php
phpinfo();
とだけ書いた適当なファイルを1個用意して
それを表示してみればいい >>65
ありがとうございます
やってみたけどブラウザが真っ白なままでした
permissionも755にしてます PHP7で関数の戻り値を指定できるようになったので、
function test(int $i) :int {
if ($i != 1) {
return false;
}
return $i;
}
上記のような関数の場合、戻り値の型が複数あるためfalseの際にエラーになるかと思います。
PHP5時代では上記のようなコードを書くことができましたが、
今後(PHP7以降)では推奨されないようになっていくのでしょうか?
また今まではif文で判定してダメならfalseを返すという関数をよく書いていたのですが、
今後上記のようなコードは避けるべきなのでしょうか? mixedを指定できるようにする案は提案されてるけど話し合いの段階に至ってない
ビルトイン関数がmixed返すならしょうがないけど
ユーザ定義関数なら7.1から使える?intでNULL許容してint or NULL返すのも考慮してみては
7.2からはobjectも返せるからオブジェクトで包めばどうにでもなるけど >>69
ありがとうございます。
?intで実装してみます。
>>70
クソコードというのは返り値がint or booleanになっているからでしょうか? >>71
>>70ではないがいくら動的型付け言語とはいえ、戻り値の型が違うのはあまりお行儀がよろしくないと思う 完全に同意するんだけどPHPの標準関数がそうなってるから何も言えねぇ phpでcookieみたいにlocalstorage扱うことできますか? localStorageってクライアントサイド実装だと思ってたんだけど俺の理解が間違ってたかな cookieもクライアントサイドだから
同じように扱えないかなと思ったのですが
違うのでしょうか?
トンチンカンなこと言ってたらすいません localStorageAPIをPHPで実装すれば可能だろうけど
そのような実装があるかは知らないな
Cookieのように仕様が単純なら簡単に実装できるだろうけど
でもそれをPHPでやる意味は・・・?
DB使ったりJSONやシリアライズ使ったり他の方法をとるべきだと思うね jQueryやjavascriptが切り貼りで動かせる程度の知識しかなく
PHPとmySQLなら色々と慣れていてやりやすいので
なんとかならないかなと思った次第です
色々と調べて他の方法探してみます
ありがとうございました あ、Cookie要求ヘッダーを$_COOKIE['key']で扱えるという話かな?
だとすると無理ですね
Cookieのようにヘッダーに含めてやり取りするわけじゃないので
そもそも小細工しなければlocalStorageからのデータかどうかも分からないし
小細工してls_keyとかの名前でpostすれば$_POST['ls_key']で取れるのでは cron.phpを
function Cron ($table) {
require_once("./pdo.php"); //DB接続
$sql = "SELECT `feed` FROM `{$table}`";
$stmt = $pdo->query($sql);
}
として、他のrun.phpから
require_once("./cron.php");
Cron("aclass");
としてもエラーはでないのですが
require_once("./cron.php");
Cron("aclass");
Cron("bclass");
とするとFatal error: Uncaught Error: Call to a member function query() on null
とエラーがでるのですがこれはどのように修正すればよいのでしょうか? cron.phpを
require_once("./pdo.php"); //DB接続
function Cron ($table) {
$sql = "SELECT `feed` FROM `{$table}`";
$stmt = $pdo->query($sql);
}
こうしたらいいんじゃね? そのようにしたら
Cron(“aclass”)だけでも
同じエラーがでました $pdoがpdo.phpでグローバルになっていない、とかのヲチでは? >>80
function Cronの最後の所で
$pdoと$stmtにnullを代入してみたら? どちらをやってもうまく動きませんでした
設計を大幅に変えて他のやり方で試して見ます
ありがとうございました >>74-79
Node.js では、
cookie はクライアントから、
HTTP request headers の、cookie に入れられて、サーバーへ送られる
一方、LocalStorage は、Form のhidden などに自分で詰めて、
サーバーへ送るように書く 結局、こういうSQL文になるのだろ。
だから、aclass, bclass のテーブルが無ければ、エラーになる
SELECT feed FROM aclass;
SELECT feed FROM bclass; 設計がキモいからアレだけど
require_once("./pdo.php"); //DB接続
function Cron ($table) {
global $pdo;
$sql = "SELECT `feed` FROM `{$table}`";
$stmt = $pdo->query($sql);
}
じゃね いや設計からやり直すで正解
requireやらglobalやら何年前の話だw それはそうだけど、globalに限らず、PHPの悪いところを知ることはとても重要だ。 phpで他のサイトのhtmlを読み込む方法を教えて。 組み込み関数使う一番簡単な方法は
$html = file_get_contents('http://');
guzzleとかスクレイピングしたいならGouttteとか
何らかのライブラリを使った方がいいとは思うが
たぶんそういうレベルじゃないよね >>89
こういった操作をするにはどう設計するのが
いいんでしょうか? >>93
Magento最新版のソース辺りでも見てみれば?
>>80のソースコードはPHP4時代を彷彿とさせるし
10年は古いと思っておいて間違いない Call to a member function query() on null
これは2回目のquery()を呼びだせていないエラーじゃないの?
require_once("./pdo.php");してるから1回目は呼び出せる。
だけど、2回目は読み込まれないから呼び出せない。
require_onceだから。 PHP質問スレ無能さ自慢大会開催してるのに
本質ついてくるのやめろ 英語が出来るかどうかってプログラミングの習得効率をだいぶ変えるよな PHPみたいなスクリプト言語のエラーメッセージって
中学レベルの英語力で理解できると思うけど
英語アレルギーな人はちょっとエラーが出ただけで
もうダメだ〜おしまいだ〜ってなるっぽい
ソースはプログラミング言語の講師経験がある俺
英語力以前に問題解決能力の問題 下らない質問します
PHP でフォルダのファイルを監視することは出来ますか?
初心なので、どういう仕組みにすれば良いのか、よくわかりません。
まず、各種センサーデバイスから、任意のフォルダにデータがUSB やLAN で放り込まれます。
(例log.txt)日時、デバイス番号、温度℃、湿度%
20180316,12:45:32,978456321,18,36
20180316,12:45:32,978456321,18,36 カンマ区切りのログデータを監視して
20180316,12:45:32,978456321,18,36
更新されたら、MySQLにアップデートして
ウェブページを見たら温湿度状態が表示されるようにしたいです。
よろしくお願いいたします。 PHPのお仕事にも出来るが、単純に、Cronのお仕事にした方が良いと思いマッスル。 set_time_limit(0);
$size = filesize("test.log");
while (1) {
clearstatcache();
$tmp = filesize("test.log");
if ($size < $tmp) {
$fp = fopen("test.log", "r");
fseek($fp, $size);
$data = fread($fp, $tmp - $size);
fclose($fp);
//$dataを整形してupdate
$size = $tmp;
}
sleep(60); //インターバル
}
ログが追記されることを想定して
ログが0になったり途中に追記されたりおかしくなるのまでは想定してない
まぁ>>101よ >>101
CronというのはLinux でしょうか?
win7proでも出来るのかよくわかりません。
検索してみます。ありがとぉごじゃりまスルメ。 >>102
出来ました。完璧です。誠にありがとうございました。 windowsの場合はタスクスケジューラって言うのがあってそれで同等(?)のことが出来る ファイル変更をトリガーとするのはLinuxではincrontabってのがあるみたいだけど
Windowsだと
https://forest.watch.impress.co.jp/library/software/folderkanshi/
こういうの使うといいっぽい
やってることは>>102と大差ないけど アップローダーを作りたいのですが作り方を教えてください
プログラミングはC#しかやったことありません
初心者向けのphpの本やサイトなどがあると嬉しいです C# を 学ぶ時に googleは 使いましたか?
php アップローダー で 検索すると 作り方 を 一通り
紹介する ページが 出てくる と思います よ アップロード処理
http://php.net/manual/ja/features.file-upload.post-method.php
htmlのformからphpにpostする
php側ではグローバル変数(配列)$_FILESにアップロードされたファイルの情報が入るので
それを操作する(デフォルトではテンポラリフォルダに入るので保存フォルダに移動したりリネームする)
あとはアップロードフォルダを読み取って中にあるファイルリストとリンクを表示するなり
投稿者のコメントやら削除やら高度な管理が必要ならデータベースやらに情報入れてそれ使うなりお好きに ありがとう!
右も左もわからないくらいの超初心者だけど頑張って作ってみる スレ違いだったらすみません
ネットの中の情報ってどこかに保存されてて僕はそれを引き出して見てるんですか?もしそうだったらどこに保存されてるんですか?
曖昧な質問すみません いわゆるサーバー
とりあえず仮想環境でサーバー作ってみて
慣れたらどこか適当なところでVPSでも借りて好きにやってみればいい
サーバーを触れないPHPerなんて話にならん サーバーを触れるようになるにはlinax系のOSも勉強しないといけませんか? linux知識は必須だ
せっかくこんなスレにくるくらいだから
LAMPシステムの概要読んだり
apacheでhttpサーバー立ち上げたり
php.ini読むことから始めてみては?
それやった上でのhello world は感慨深いものがあるぞ >php.ini読むことから始めてみては?
ええぇぇぇ… >>113
私の場合、WindowsのPCにVirtualBoxで仮想マシンを仕立て、そこにLinuxをインストールしてます。
これに >>114 のようにそれぞれ個別にapache、PostgreSQL、PHPを入れて遊んでますね。 LinuxっていってもデスクトップはWindowsと変わらないけど
いわゆるガチのサーバ機はデスクトップ環境でやらないので
WindowsならDOSプロンプトで遊ぶところからがいいのでは >>107が希望しているアップローダーは、どこに置いて実現したいのかな
自分の手元にあるWindowsPCにPHPをインストールし、
PHPのスクリプトをそこに置いて
コマンドラインでPHPを起動してスクリプトを実行する感じ?
それとも、どこかのレンタルサーバーを借りて、そこにPHPスクリプトを置いて
WindowsPCはレンタルサーバーのHTMLを使い、ブラウザでフォームを表示させ、
そのフォームに手元のファイル名を指定し、ボタンを押してアップロードする? 諸事情でララベルしなきゃいけないんだがSQLが俺は全く出来ないていう状態なんだが
ララベルとSQLはそれぞれ並行してやった方がええかな?分担してやった方がええかな? Laravelみたいなフレームワークは
普通はSQL文を直接書かずにクエリビルダーを通すんだが
何らかのフレームワークは使った事あるのかね
その質問レベルで分業できるのか疑問 >>121
mvcとやらはvueでルーターでビュー振り分けたり変数の値を直接表示したりで慣れてるけど
フレームワークにあるテストやらなんやらの沢山の設定ファイルは苦手やな
今前知識活かしてルーター探してララベルでビューの切り替えした辺り
どの道ララベルとMySQLを覚えなきゃいかんのだが、今は最優先でララベルで二、三個モノを作らなきゃいかん
ガチれば一夜漬けでSQLデータの出し入れ位は出来るようなるかな? >>123
おおありがとうな
本当にやったんだがMySQLのインスコ時に沢山エラー出ただけで
phpから中身吐くの簡単やなぁ SQL周りの質問します
$sql = 'select count(bang) from tbk';
$stmt = $dbh->prepare($sql);
$stmt->execute();
こう書いてcountでデータベースの行数を取得してその値をPHP側で受け取るにはどういうコード書けばいいですか?
$count = $stmt->fetch(PDO::FETCH_ASSOC);
こう書いて$countで受け取ってvar_dumpで調べたら連想配列なんですが$count['bang']としても値を得れません
データベースのカウント後を受け取るにはどう書けばいいんでしょうか? データベースのcountを普通の変数として受け取りたいです。 たぶん名前はcountになってると思うけど
SQLのほうで as つけて好きな名前にしたら確実かと思う >>126
$count = $stmt->fetchColumn(); $count['count'] か
$sql = 'select count(bang) as bang from tbk';
でもよかったのよ、ってこれ意味わからなかったのか >>130
ありがとうございます
理解できてませんでした
$count['count'] のほうではできませんでしたが
$sql = 'select count(bang) as bang from tbk';のほうでcount['bang']としたら通りました。
難しいですね・・・ include_once って読み込むファイルを http://・・・ で指定する方法は
無いの? php.iniでallow_url_includeをOnにして
include_onceすればオッケー おっけーだけど実際何もおっけーじゃねぇな, HTTPとか正気の沙汰ではない >>131
$sql = 'select count(bang) from tbk';
このままで実行したときは、
$count['count(bang)'] に入っている >>135
>HTTPとか正気の沙汰ではない
なんでよ? 改竄されたら任意コード実行に直結やぞ
せめてちゃんとした証明書付きのHTTPSは必要
それでも何か嫌だけど >>138
>改竄されたら任意コード実行に直結やぞ
それは今回の質問の件と関係なく
改竄された時点で危険なんじゃないの? >>136
var_dumpで調べたとき確かそうでました。
そのまま括弧もつけて書くとは思いませんでした。
勉強になります。ありがとうございます。 文法を一通り習って、Laravelなるフレームワークが主流と聞いて調べてみたのですが、自分の知ってるPHPとだいぶ違って面食らいました。
これはオブジェクト指向プログラミングなるものを習えばわかるようになるのでしょうか?
公式のドキュメント読むとルーティングとかコントローラーとか解説なしで当然のごとく出てきて激鬱です。
何をすればLaravelが使えるようになるか書籍・ウェブサイト等、指針を示して頂きたいです。 フレームワークはコーディングにルールや制約を持たせることで
簡単に構築できるようになってるので
自分の知らないことや言葉に惑わされず
とりあえず書かれてる通りに従って真似してみればいいだけだよ
サンプルを何個かやってくうちにどんなもんかわかるだろうし >>142
とりあえずLaravelのチュートリアルでもやったらいいんではないか
あとMVCの基本的な構成は勉強してもいいかもね フレームワークまじでわからん
内容や構造を理解、構築しようとするのではなく、ひたすら「手法」を学べ
ってアドバイスされたがそれでもわからん、ってかこのアドバイス本当にあってんの?俺の頭がイカれてるのかと思い始めてきた >>145
フレームワークは構造を理解した上で使うもの。職場でそれ言われたんならすぐ他行ったほうがいい。 >>143-144
ありがとうございます
とりまやってみます 48都道府県名が格納されてる配列があるとして
例えば東京都が格納されてる配列番号を知りたいときはpreg_grepとprint_rを使った結果を確認すればいいみたいですが
検索して結果の配列番号だけを変数に格納するにはどうすればいいのでしょうか? 下手にarray系の関数使うよりforeachでやったほうがたいていパフォーマンスはいい と書いてみて気になって測ってみたけど
array_searchのほうが早かったな
php5時代の常識はもはや通用せんね >>149
$ken = ['東京', '京都', '大阪'];
$kenFlip = array_flip($ken);
var_dump($kenFlip['京都']); Ruby on Rails 5.2正式版発表。Active Storageによるクラウドストレージ対応、Redisでのキャッシュ対応など
http://www.publickey1.jp/blog/18/ruby_on_rails_52active_storageredis.html
>Active Storageは、Amazon S3やGoogle Cloud Storage、Microsoft Azure Storageのような
>クラウドドストレージに対してファイルをアップロードし、
>それらのファイルのActive Recoredオブジェクトへの添付を容易にする機能です。
>また、ミラーリング機能によって複数のクラウドストレージのあいだでファイルを同期することもできます。
>これによって高い冗長性などを実現可能です。
これは良さそうですがPHPにこういうのありますか? >>153
Symfony
+
Doctrine
+
VichUploaderBundle
+
Flysystem
FlysystemのAWS S3用アダプタ
でDBへの書き込みと画像のS3へのアップロードなら出来る
冗長化は無いが
サムネイル作成が必要ならLiipImagineBundleで
VichUploaderはPropelやMongoDBにも対応している
FlysystemはSymfony以外も対応している グラフ画像を作って保存したいんですけど簡単なライブラリみたいなのってありませんか?
グラフを表示するhtmlやCSSをはくとかはあるみたいなんですけど
グラフ画像を作るのはさがしてもみあたらなくて… レンタルサーバーを借りてphpの勉強はじめたんですけど
/ドメイン名/public_html/ 以下に php ファイルをおくとエラーが出たときに
/home/アカウント名/サーバー名/public_html/...
のファイルでエラーがありましたってでちゃうんですけど
アカウント名をみえなくすることってできませんか?
関数全部に@つけるのも微妙だし
何かの拍子でアカウント名みえちゃうのいやなんですよね ■ このスレッドは過去ログ倉庫に格納されています